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