JavaScript >> Javascript 文檔 >  >> JavaScript

Breaking Bad(JavaScript 庫中的循環)

當我發現最流行的 JavaScript 庫在處理 each 和 forEach 循環的方式上存在不一致時,我感到有點驚訝。本帖對比:

  • 原生 JavaScript 中的 forEach 循環
  • Lo-Dash 中的每個循環
  • jQuery 中的每個循環
  • Underscore.js 中的每個循環
  • Underscore.js 中的 forEach 循環

原生 JavaScript 中的 forEach 循環

JavaScript 庫很重要(例如,jQuery、Lo-Dash、Underscore),但在功能循環的情況下(forEacheach )它們會造成很多混亂(for循環可以用'break'來打破)。讓我們看看 forEach 的原生 JavaScript 代碼示例 方法:

[1,2].forEach(function(v){
  alert(v);
  return false;
})

這將向我們顯示兩個警報框。在 JSFiddle 中自己嘗試原生 JavaScript 代碼。

這是大多數情況下的預期行為,因為每次迭代我們都會調用一個新函數。不同於 for (var i=0; i<arr.length; i++) {} 沒有函數/迭代器的代碼。

然而,在 Lo-Dash 和 jQuery 中,類似的代碼打破了循環!

打破 Lo-Dash 中的每個循環

each 的 Lo-Dash 代碼 只產生一個警報

_.each([1,2],function(v){
  alert(v);
  return false;
})

在 JSFiddle 中自己嘗試上面的 Lo-Dash 代碼。

在 jQuery 中打破每個循環

同樣,jQuery each 示例僅顯示第一個警報:

$.each([1,2],function(i, v){
  alert(v);
  return false;
})

在 JSFiddle 中自己嘗試 jQuery 代碼。

不中斷 Underscore.js 中的每個循環

更複雜的是,Underscore.js 和 Backbone.js 仍然忠實於原生 JavaScript 解釋。

Underscore.js each 遍歷每個項目並且不會中斷的示例 :

_.each([1,2],function(v){
  alert(v);
  return false;
})

試試下劃線 each JSFiddle 中的方法。

Underscore.js 中的非中斷 forEach 循環

只是為了它,下劃線 forEach() 進行了測試。它可靠地產生了類似於原生 forEach() 的結果 :兩個警報!

下劃線 forEach() 代碼:

_.forEach([1,2],function(i, v){
  alert(v);
  return false;
})

試試 Underscrore.js forEach() 在 JSFiddle 自己編寫代碼。

[旁注]

閱讀博客文章很好,但觀看視頻課程更好,因為它們更具吸引力。

許多開發人員抱怨 Node.js 上缺乏負擔得起的高質量視頻材料。觀看 YouTube 視頻會讓人分心,花 500 美元購買 Node 視頻課程很瘋狂!

去看看 Node University,它有關於 Node 的免費視頻課程:node.university。

[旁注結束]

Lo-Dash 和 Underscore 之間的代碼破解區別

這篇簡短文章的結論是 Lo-Dash 不等於 Underscore , 除非正在使用特殊的下劃線兼容版本。 John-David Dalton (@jdalton) 親切地向我指出了這一點:

PS:Underscore.js forEach 比原生 forEach 更兼容瀏覽器 因為後者是後來添加到 JavaScript API 的,舊版瀏覽器不支持。


Tutorial JavaScript 教程
  1. 使用 ngrx-forms 管理表單驅動狀態(第 2 部分)

  2. 謝謝法克。現在是時候繼續前進了。

  3. 模擬可能導致誤報測試

  4. 使用 Agora 創建一對一的交互式視頻會議 Web 工具

  5. 即將推出的有趣的 JavaScript ES2021 (ES12) 特性

  6. 將json數據轉換為html表

  7. JavaScript 對象長度未定義 |解決方案

  1. JavaScript 中的正則表達式:備忘單

  2. 以簡單的方式生成代碼模板。

  3. 停止全局安裝包

  4. 在 Angular 中生成組件(使用 CLI/手動)

  5. 使用您自己的 React 組件自定義 AWS Amplify 身份驗證 UI

  6. React Virtual Window - 虛擬化任何東西以提高性能!

  7. 使用 Storybooks 新的組件故事格式提高您的工作效率

  1. 我在面試 Web 開發角色時遇到的 5 個不尋常的測試問題

  2. 十一和多雲圖像

  3. 使用 Socket.io 反應原生聊天應用程序

  4. 反應應用程序不工作? 4 個快速調試技巧