以下for循环打印出0和1非常有趣。 任何人都有助于解释:1对lambda函数中的变量意味着什么? 2.为什么要输出0和1? (我将['a','b']改为[1,2],它仍然打印0和1。
0
1
打印出来
<form action="form.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename" onchange="javascript:this.form.submit();">
<input type="text" name="my_flag" hidden />
</form>
答案 0 :(得分:3)
在
for (var f in d = function(){}, ['a', 'b']) ...
如果将in
子句包装到括号中,则可以解释:
for (var f in (d = function(){}, ['a', 'b']) )
其中(d = function(){}, ['a', 'b'])
是括在括号中的表达式。该表达式由另外两个表达式和一个,
运算符组成。
,
operator反过来评估两个操作数并返回后者。
因此,在您的情况下,d = function(){}
将匿名函数分配给变量d
,然后返回包含2个元素的数组。
总结:d = function(){}
表达式不会被忽略,您可以在此循环后的语句中使用d
。
答案 1 :(得分:1)
这是一种奇怪的行为,但要详细说明,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)
您正在记录数组的键,因此它有2个条目,它打印出0和1.也许这有助于您理解
for(var key in array){
console.log(key, array[key]);
}
所以键(或索引)将是一个数字,表示数据在数组中的位置。然后,您可以通过array[key]