Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这对于in-loop意味着什么?为什么它只打印出0和1?_Javascript - Fatal编程技术网

Javascript 这对于in-loop意味着什么?为什么它只打印出0和1?

Javascript 这对于in-loop意味着什么?为什么它只打印出0和1?,javascript,Javascript,有趣的是,以下for in-loop打印出0和1。 任何人都可以帮助解释:1它对lambda函数中的变量意味着什么?2.为什么打印0和1?我将['a','b']更改为[1,2],它仍然打印0和1 for (var f in d = function(){}, ['a', 'b']){console.log(f)} 打印出来 0 1 您正在记录数组的键,因此由于它有2个条目,所以它将输出0和1。也许这会帮助你理解 for(var key in array){ console.log(

有趣的是,以下for in-loop打印出0和1。 任何人都可以帮助解释:1它对lambda函数中的变量意味着什么?2.为什么打印0和1?我将['a','b']更改为[1,2],它仍然打印0和1

for (var f in d = function(){}, ['a', 'b']){console.log(f)}
打印出来

0  
1 

您正在记录数组的键,因此由于它有2个条目,所以它将输出0和1。也许这会帮助你理解

for(var key in array){
  console.log(key, array[key]);
}

因此,键或索引将是一个数字,表示数据在数组中的位置。然后,您可以通过使用array[key]

获取您的值。您正在记录数组的key,因此,由于它有2个条目,所以它会打印出0和1。也许这会帮助你理解

for(var key in array){
  console.log(key, array[key]);
}
因此,键或索引将是一个数字,表示数据在数组中的位置。然后,您可以通过使用array[key]

获取您的值

for (var f in d = function(){}, ['a', 'b']) ...
如果将in子句括在括号中,则可以解释:

for (var f in (d = function(){}, ['a', 'b']) ) 
其中d=函数{},['a',b']是一个用括号括起来的表达式。该表达式由另外两个表达式和一个、运算符组成

依次计算两个操作数并返回后者

因此,在您的例子中,d=函数{}将匿名函数分配给变量d,然后返回包含2个元素的数组

总而言之:d=function{}表达式不会被忽略,您可以在循环后的语句中使用d

for (var f in d = function(){}, ['a', 'b']) ...
如果将in子句括在括号中,则可以解释:

for (var f in (d = function(){}, ['a', 'b']) ) 
其中d=函数{},['a',b']是一个用括号括起来的表达式。该表达式由另外两个表达式和一个、运算符组成

依次计算两个操作数并返回后者

因此,在您的例子中,d=函数{}将匿名函数分配给变量d,然后返回包含2个元素的数组


总而言之:d=function{}表达式不会被忽略,您可以在此循环后的语句中使用d。

这是一个奇怪的行为,但为了详细说明这一点,javascript通过数组中的值来表示…in-loop,但此数组是最后一个参数

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 (var f in d =function(){}, ['a', 'b']){console.log(d[f])} //prints undefined

打印未定义。['a','b']没有分配给d

这是一个奇怪的行为,但为了详细说明这一点,javascript在数组中通过值进行循环,但该数组是最后一个参数

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 (var f in d =function(){}, ['a', 'b']){console.log(d[f])} //prints undefined

打印未定义。['a','b']未分配给d

循环始终迭代对象的可枚举键/属性。即使对于数组,f也被分配了索引。这不是语法错误,但在上面的示例中,d没有purpose@JonathanLonowski我认为这不准确。我相信for..in正在迭代最后一个参数,在本例中是数组。d仍然是循环末尾的一个函数,在上面没有任何用途。您可以分配或使用任意数量的变量var b=[];对于a=,b,c=函数{},{…}中的var p,确定。对于d=function{}{console.logf}中的varf行,function对象似乎没有可枚举的键/属性,并且没有输出任何内容。正当然而,为什么引擎不报告任何错误或警告,比如这个无用的代码?@JonathanLonowski函数{}被逗号运算符丢弃,返回['a','b']以分配=给d-这是错误的。循环始终迭代对象的可枚举键/属性。即使对于数组,f也被分配了索引。这不是语法错误,但在上面的示例中,d没有purpose@JonathanLonowski我认为这不准确。我相信for..in正在迭代最后一个参数,在本例中是数组。d仍然是循环末尾的一个函数,在上面没有任何用途。您可以分配或使用任意数量的变量var b=[];对于a=,b,c=函数{},{…}中的var p,确定。对于d=function{}{console.logf}中的varf行,function对象似乎没有可枚举的键/属性,并且没有输出任何内容。正当然而,为什么引擎不报告任何错误或警告,比如这个无用的代码?@JonathanLonowski函数{}被逗号操作符丢弃,返回['a','b']以分配=给d-这是错误的。测试。你是对的。但是,匿名函数{}在这里做什么?这是完全可以忽略的吗?经过测试。你是对的。但是,匿名函数{}在这里做什么?这是完全可以忽略的吗?