这个for in循环是什么意思,为什么它只输出0和1
What does this for in loop mean and why it just prints out 0 and 1?
很有趣,下面的for in循环打印出0和1。有人能帮我解释一下函数中的变量是什么意思吗?2. 为什么输出0和1?(我把['a', 'b']改成[1,2],它仍然输出0和1。
for (var f in d = function(){}, ['a', 'b']){console.log(f)}
打印出
0
1
for (var f in d = function(){}, ['a', 'b']) ...
如果您将in
子句包装到括号中,则可以解释:
for (var f in (d = function(){}, ['a', 'b']) )
,其中(d = function(){}, ['a', 'b'])
是用圆括号括起来的表达式。该表达式由另外两个表达式和一个,
操作符组成。
,
运算符依次计算两个操作数并返回后者。
因此,在您的情况下,d = function(){}
将匿名函数分配给变量d
,然后返回具有2个元素的数组。
总结:d = function(){}
表达式不会被忽略,您可以在此循环后的语句中使用d
。
这是一个奇怪的行为,但是为了详细说明这一点,javascript for…In循环遍历数组中的值,但该数组是最后一个参数。
for (var f in d =null, ['a', 'b']){console.log(f)} //prints 0,1
for (var f in null, ['a', 'b'],['a', 'b','c'],['a', 'b','c','d']){console.log(f)}//prints 0,1,2,3
所以基本上d是什么,或者其他参数是什么都不重要,在这个例子中,最后一个参数['a', 'b','c','d']是for循环要遍历的数组
还要注意
for (var f in d =function(){}, ['a', 'b']){console.log(d[f])} //prints undefined
打印未定义。['a','b']没有赋值给d
您正在记录数组的键,因此由于它有2个条目,因此它打印出0和1。也许这能帮助你理解
for(var key in array){
console.log(key, array[key]);
}
,因此键(或索引)将是一个数字,表示您的数据在数组中的位置。你可以输入array[key]
相关文章:
- 函数将输出nan而不是数字,为什么
- 为什么这个javascript的输出被覆盖
- 为什么我的Alexa技能测试显示正确的lambda输出,但在开发人员控制台中测试时却给出错误消息
- 为什么不是't此函数用于修改最终输出
- 为什么这个子节点给我那个奇怪的输出
- 为什么 Javascript sort() 函数没有给出预期的输出
- Javascript OOP-为什么这两个几乎完全相同的语句给出不同的输出
- 两个javascript网络工作者连续打印输出-为什么不同时打印呢
- 为什么console.log()在我的代码中输出意外的0
- 从数组中删除项目,为什么输出中的 for 和 for 不同
- 为什么这个控制台会像在这个范围示例中那样记录输出
- 为什么microAjax中的alert没有输出php文件中的回显文本
- 当我从有界数据派生输出时,为什么我的自定义指令不更新
- 为什么setTimeout输出不按顺序添加的数字
- 为什么jQuery每次都输出相同的rel
- 为什么我的输出未定义
- 为什么RegEx输出转义文本而不是HTML
- 解释为什么 '+[] == 0' 在 Javascript 中输出 'true'
- 为什么jQuery减法输出NaN
- 为什么使用 Webpack 和 Gulp 构建的输出包如此之大 (>1.9Mb)