7
在一本書,我讀(JavaScript的& JQuery的 - 互動前端由喬恩·達克特發展)有一個有趣的錯誤或(至少我是這麼認爲的)不停止工作的代碼:var i = [0]在for循環中,然後增加i ++ - 爲什麼它工作?
for (var i = [0]; i < options.length; i++) {
addEvent(options[i], 'click', radioChanged);
}
這是腳本的一部分,它循環遍歷表單中的所有單選按鈕並附加一個事件監聽器(它並不重要)。
但是......
爲什麼我初始化爲數組呢?
爲什麼增量起作用?
爲什麼整個循環工作?
當然,如果用var i = 0替換var i = [0],代碼仍然可以工作。
當您添加一些警報來檢查循環的每次迭代中的i的值和i的類型時,在第二次迭代中,i的類型從對象(在第一次迭代中它是一個數組)後更改爲數。 這是一種隱式類型轉換,我從來沒有遇到過(和谷歌沒有多大幫助)。任何人都可以解釋底下發生了什麼?
for (var i = [0]; i < options.length; i++) {
addEvent(options[i], 'click', radioChanged);
alert(i); // --> 1 2 3 ...
alert(type of i); // --> object number number ...
}
好的,謝謝:)所以我想這是一種小錯誤,但不是'錯誤'... – Tadek
@Tadek:這更多的是一個令人困惑的功能。規範說這是爲了增加「1」會導致「2」而不是「11」。 – SLaks