小编Tad*_*dek的帖子

在for循环中var i = [0],然后递增i ++ - 为什么它有效?

在我正在阅读的一本书中(JavaScript和JQuery - Jon Duckett的交互式前端开发),有一个有趣的错误或(至少我认为是这样)并不能阻止代码工作:

for (var i = [0]; i < options.length; i++) {         
   addEvent(options[i], 'click', radioChanged);       
}
Run Code Online (Sandbox Code Playgroud)

这是脚本的一部分,它遍历表单中的所有单选按钮并附加事件监听器(它的作用并不重要).

但...

  1. 为什么我初始化为数组?

  2. 为什么增量有效?

  3. 为什么整个循环工作?

当然,如果用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 ...
}
Run Code Online (Sandbox Code Playgroud)

javascript for-loop type-conversion

7
推荐指数
1
解决办法
98
查看次数

标签 统计

for-loop ×1

javascript ×1

type-conversion ×1