以下代码中对Array.prototype.map的调用均返回数组[2,4,6]。解释两行代码之间的细微差别。首选哪个,为什么?
[1, 2, 3].map(n => n *= 2);
[1, 2, 3].map(n => n * 2);
我试图将一种视为重新分配,另一种视为突变
答案 0 :(得分:0)
在第一种情况下,您正在重新分配n
,但是由于n
被丢弃,这种副作用并没有真正显现出来。
答案 1 :(得分:0)
第一行可以写成如下形式。所以你只是重新分配n
console.log([1, 2, 3].map(n => n = n*2));// Like this just reassigning n with n*2 after every iteration
console.log([1, 2, 3].map(n => n * 2));
答案 2 :(得分:0)
应该没有任何区别。
两者给出相同结果的原因是.map()
总是返回一个用给定函数的结果填充的新数组。需要说明的是,赋值运算符的结果就是赋值本身,实际上,如果您运行
let x = 5;
console.log(x = 4);
您得到4作为输出。
通过以下行为:
n => n * 2
-将n * 2
的结果放入相应的数组单元格中n => n *= 2
-将n *= 2
的结果放入相应的数组单元格中,结果恰好是n * 2