这个for in循环是什么意思,为什么它只输出0和1

What does this for in loop mean and why it just prints out 0 and 1?

本文关键字:输出 为什么 in for 循环 是什么 意思 这个      更新时间:2023-09-26

很有趣,下面的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]