在看設計模式這本書,遇到一個使人疑惑的for循環語句javascript
for (var i = 0, type;type = ['String', 'Array', 'Number'][i++]) { 代碼塊 }
比較疑惑,由於從平時接觸的來看基本上都是java
for(語句1,語句2,語句3){ } 語句1:起始 語句2:循環終止條件 語句3:在循環後被執行的語句
如今的疑惑以下設計模式
for(var i =10,i--;){ }
實際上上面的語句等同於,這是爲何spa
for(var i =0, i<10 i++;){ }
原來這裏等同於把循環終止條件和循環被執行後執行的語句相結合了即把判斷和賦值放到一塊兒了,一邊循環一邊賦值,
i--是什麼判斷條件,當i--爲fasle即,循環終止,在js中0, null, undefined, false, ‘’,
根據Boolean的隱形轉化,其結果爲false,即i=0時條件終止
再回到咱們以前的問題設計
for (var i = 0, type;type = ['String', 'Array', 'Number'][i++]) { 代碼塊 }
var i =0,type;//語句1 type = ['String', 'Array', 'Number'][i++] //語句2
即這裏的判斷+賦值調件爲type = ['String', 'Array', 'Number'][i++],終止條件爲type=‘undefined’code