【JavaScript 】for 循環進化史


ECMAScript 6已經逐漸普及,經過二十多年的改進,很多功能也有了更成熟的語句,比如 for 循環

這篇博客將介紹一下從最初的 for 循環,到 ES6 的 for-of 等四種遍歷方法

先定義一個數組:

const myArray = [1, 5, 9]; myArray.name = 'wise'

在控制台中打印這個數組,會看到這個數組的全貌:

 

一、 for

相信大部分開發工作者,最初遍歷數組的方法都是使用 for 循環:

for ( let i = 0; i < myArray.length; i++ ) { console.log(myArray[i]); }

作為初代循環語句,for 語句僅僅解決了遍歷這一功能,但冗長的代碼還是顯得過於笨重

 

二、 for-in

相比 for 語句,for-in 就輕巧得多,但是 for-in 通常用來遍歷對象,如果遍歷數組的話...

for ( let key in myArray ) { console.log(key); }

直接遍歷的話,會打印數組的 index,而 index 是 string 類型

如果編程的時候不注意,很可能在無意中進行了字符串的計算: "1"+"1"="11"

所以使用 for-in 遍歷數組的正確姿勢應該是:

for ( let key in myArray) { console.log(myArray[key]); }

和 for 循環不同,for-in 語句還將自定義屬性 "name" 的值 "wise" 打印了出來

所以用 for-in 遍歷數組這種事,還是別在開發的時候干了

 

三、 forEach

ES5 發布之后,js 新增了內建方法 forEach,這確實是一個遍歷數組的好方法:

myArray.forEach(function (value) { console.log(value); });

但是 forEach 的本質還是一個方法,並不是語句

所以它並不能響應 break 和 continue 語句

 

四、 for-of

仔細分析一下上面三種方法,如果僅限於遍歷數組的話,似乎最初的 for 語句反而最合適

直到 ES6 橫空出世,新的循環語句 for-of 開始嶄露頭角

for ( let key of myArray ) { console.log(key); }

 

沒錯,for-of 就是最直接最清爽的遍歷數組的辦法

如果用一句話概括 for-in 與 for-of 的區別的話,那就是:

for-in 循環用來遍歷對象屬性,for-of 循環用來遍歷數據

 

五、 for-of 不僅如此

作為一個 ES6 新增的語句,for-of 和其他 ES6 語法的結合,才是它的強大之處

 

遍歷 Set 類型:

const mySet = new Set('wwiissee'); for ( let value of mySet ) { console.log(value); }

遍歷 Map 類型:

const myMap = new Map([ ['name', 'wise'], ['info', 'wrong'], ['home', 'cnblogs'] ]); for ( let [key, value] of myMap ) { console.log(key + ' is ' + value); }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM