Javascript 这对于in-loop意味着什么?为什么它只打印出0和1?
有趣的是,以下for in-loop打印出0和1。 任何人都可以帮助解释:1它对lambda函数中的变量意味着什么?2.为什么打印0和1?我将['a','b']更改为[1,2],它仍然打印0和1Javascript 这对于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 (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-这是错误的。测试。你是对的。但是,匿名函数{}在这里做什么?这是完全可以忽略的吗?经过测试。你是对的。但是,匿名函数{}在这里做什么?这是完全可以忽略的吗?