在看設計模式這本書,遇到一個令人疑惑的for迴圈語句 比較疑惑,因為從平時接觸的來看基本上都是 現在的疑惑如下 實際上上面的語句等同於,這是為什麼 原來這裡等同於把迴圈終止條件和迴圈被執行後執行的語句相結合了即把判斷和賦值放到一起了,一邊迴圈一邊賦值,i--是什麼判斷條件,當i--為fasle即,循 ...
在看設計模式這本書,遇到一個令人疑惑的for迴圈語句
for (var i = 0, type;type = ['String', 'Array', 'Number'][i++]) { 代碼塊 }
比較疑惑,因為從平時接觸的來看基本上都是
for(語句1,語句2,語句3){ } 語句1:起始 語句2:迴圈終止條件 語句3:在迴圈後被執行的語句
現在的疑惑如下
for(var i =10,i--;){ }
實際上上面的語句等同於,這是為什麼
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’