for 迴圈進化史

2022-01-17 04:39:04 字數 1584 閱讀 3276

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++ )

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

二、 for-in

相比 for 語句,for-in 就輕巧得多,但是 for-in 通常用來遍歷物件,如果遍歷陣列的話...

for ( let key in myarray )

直接遍歷的話,會列印陣列的 index,而 index 是 string 型別

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

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

for ( let key in myarray)

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

所以用 for-in 遍歷陣列這種事,還是別在開發的時候幹了

三、 foreach

es5 發布之後,js 新增了內建方法 foreach,這確實是乙個遍歷陣列的好方法:

myarray.foreach(function (value) );

但是 foreach 的本質還是乙個方法,並不是語句

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

四、 for-of

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

直到 es6 橫空出世,新的迴圈語句 for-of 開始嶄露頭角

for ( let key of myarray )

沒錯,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 )

遍歷 map 型別:

複製**

複製**

const mymap = new map([

['name', 'wise'],

['info', 'wrong'],

['home', 'cnblogs']

]);for ( let [key, value] of mymap )

複製**

複製**

C 進化史 屬性

c 1.0 宣告乙個唯讀屬性。string name public string name c 2.0 增加了屬性私有方法,如果有乙個屬性只可以在本類內賦值,其他類為唯讀的情況下c 1.0是做不到的。string name public string nameprivate set c 3.0 增加...

頁面布局進化史

布局是前端開發最基礎作重要的技能,兩列,三列布局是 頁面中應用最多的一種布局樣式基本上是 左右結構左邊是分類右邊是內容,左中右結構,主要內容在中間,兩邊放次要內容。在css剛剛興起的時候頁面的布局都是用的 來實現的,隨著css發展,各種浮動,定位布局開始流行,特別是css3的出現使得我們在實現一些複...

發布流程進化史

此文已由作者尤炳棋授權網易雲社群發布。前因後果 klqa平台於17年9月開始著手搭建發布流程模組,在前期需求調研的基礎上,捋出了發布流程的幾個關鍵節點。包括 版本鎖定 提交發布申請 審批通過 通知pe發布 發布完成 五個節點。發布流程頁面上方有五個節點的步驟圖。下方包括 發布確認項 版本checkl...