JavaScript for of 迴圈
在ES2015之前,遍歷資料介面通常採用如下幾種常見方式:
(1).for迴圈語句,具體參閱JavaScript for迴圈語句一章節。
(2).for in語句,具體參閱JavaScript for in語句一章節。
舉一個簡單的例子:
[JavaScript] 純文字檢視 複製程式碼執行程式碼let arr=["螞蟻部落","ES2015",6,"青島市南區"]; for(let index=0;index<arr.length;index++){ console.log(arr[index]); }
程式碼執行效果截圖如下:
非常簡單的程式碼,使用for迴圈能實現了對陣列的遍歷效果。
for in語句就不再舉例子了。
ES2015新增for of語句同樣可以實現遍歷功能,它面向的物件型別更加寬泛。
在JavaScript Iterator遍歷器一章節介紹過,遍歷器為不同物件提供了統一的遍歷介面。
for of語句可以遍歷所有具有遍歷器介面的物件。
具有遍歷器介面的物件如下:
(1).陣列物件。
(2).某些類陣列物件。
(3).Map物件。
(4).Set物件。
特別說明:常見的類陣列物件有字串物件,DOM元素物件集合和arguments物件。
相關閱讀:
(1).DOM元素物件集合參閱JavaScript元素集合介紹一章節。
(2).arguments物件參閱JavaScript arguments物件詳解一章節。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼let arr = ["螞蟻部落",6,"青島市南區","ES2015"]; for(let elem of arr) { console.log(elem); }
程式碼執行效果截圖如下:
上面程式碼實現了對陣列元素的遍歷效果。
[JavaScript] 純文字檢視 複製程式碼執行程式碼function func(a, b) { let it = arguments[Symbol.iterator](); for(let arg of it) { console.log(arg); } } func("螞蟻部落", "青島市南區");
程式碼執行效果截圖如下:
在前面已經介紹過arguments是類陣列物件。
我們並沒有直接去遍歷arguments物件,而是操作它的遍歷器物件,實現了遍歷功能。
上面的現象可以猜測(事實也是如此)出如下結論:
(1).arguments物件具有遍歷器介面。
(2).for of本質上是通過遍歷器物件來遍歷資料結構。
[JavaScript] 純文字檢視 複製程式碼執行程式碼function func(a, b) { for(let arg of arguments) { console.log(arg); } } func("螞蟻部落", "青島市南區");
此程式碼就是直接使用for of操作arguments物件。
[JavaScript] 純文字檢視 複製程式碼執行程式碼let map = new Map([["webName", "螞蟻部落"], ["url", "www.softwhy.com"]]); for(let elem of map) { console.log(elem); }
程式碼執行效果截圖如下:
for of實現了物件Map物件的遍歷功能。
[JavaScript] 純文字檢視 複製程式碼執行程式碼let set = new Set(["螞蟻部落",6,"青島市南區","ES2015"]); for(let elem of set) { console.log(elem); }
程式碼執行效果截圖如下:
上面程式碼實現了對Set物件的遍歷功能。
[JavaScript] 純文字檢視 複製程式碼執行程式碼function *antzone(){ yield "螞蟻部落一"; yield "螞蟻部落二"; yield "螞蟻部落三"; yield "螞蟻部落四"; } let g=antzone(); for(let elem of g){ console.log(elem); }
程式碼執行效果截圖如下:
上述程式碼實現對Generator資料結構的遍歷。
[JavaScript] 純文字檢視 複製程式碼執行程式碼let str = "softwhy"; for(let char of str) { console.log(char); }
程式碼執行效果截圖如下:
字串也具有遍歷器介面,所以for of語句可以實現對它的遍歷功能。
[JavaScript] 純文字檢視 複製程式碼執行程式碼let str = "\uD842\uDFB7"; for(let char of str) { console.log(char); }
for of能夠正確識別32位的UTF-16字元。
相關文章
- javascript迴圈JavaScript
- javaScript for迴圈JavaScript
- 無迴圈 JavaScriptJavaScript
- JavaScript for 迴圈語句JavaScript
- JavaScript的迴圈方式(1)JavaScript
- 理解 JavaScript 中的迴圈JavaScript
- JavaScript事件迴圈(Event Loop)JavaScript事件OOP
- JavaScript 事件迴圈機制JavaScript事件
- JavaScript-事件迴圈-eventLoopJavaScript事件OOP
- JavaScript跳出for迴圈語句JavaScript
- 聊聊Javascript的事件迴圈JavaScript事件
- JavaScript中的while迴圈JavaScriptWhile
- 05--JavaScript--1.4迴圈JavaScript
- Javascript 事件迴圈event loopJavaScript事件OOP
- JavaScript事件迴圈機制JavaScript事件
- javascript事件迴圈機制EventLoopJavaScript事件OOP
- javascript之事件迴圈機制JavaScript事件
- JavaScript文字迴圈變色效果JavaScript
- 【JavaScript實用技巧(一)】迴圈遍歷與跳出迴圈遍歷JavaScript
- 學習JavaScript非同步、事件迴圈JavaScript非同步事件
- JavaScript 事件迴圈詳解(翻譯)JavaScript事件
- javascript事件迴圈(瀏覽器/node)JavaScript事件瀏覽器
- 我理解的javascript事件迴圈(一)JavaScript事件
- JavaScript如何中斷迴圈執行?JavaScript
- JavaScript(二):選擇、迴圈結構JavaScript
- JavaScript執行機制-node事件迴圈JavaScript事件
- 淺析JavaScript的事件迴圈機制JavaScript事件
- JavaScript中更好的迴圈寫法大全JavaScript
- JavaScript的事件迴圈(Event loop)(附圖)JavaScript事件OOP
- 詳談javascript和node的事件迴圈JavaScript事件
- Javascript 常見的迴圈方式總結JavaScript
- 學習JavaScript迴圈下的async/awaitJavaScriptAI
- JavaScript 事件迴圈(1) —— 從 setTimeout 說起JavaScript事件
- JavaScript的事件迴圈機制淺析JavaScript事件
- JavaScript中迴圈遍歷JSON響應!JavaScriptJSON
- for 迴圈與 while 迴圈While
- while迴圈 case迴圈While
- C語言——迴圈結構(for迴圈,while迴圈,do-while迴圈)C語言While