以下代码中对 Array.prototype.map 的两次调用都返回数组 [2, 4, 6]。解释两行代码之间的细微差别。哪一个是首选,为什么?[1, 2, 3].map(n => n *= 2);
[1, 2, 3].map(n => n * 2);我试图将一个视为重新分配,另一个视为突变
3 回答
斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
第一行可以写成如下。所以你只是重新分配 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));
撒科打诨
TA贡献1934条经验 获得超2个赞
应该没有什么区别。两者给出相同结果的原因是.map()
总是返回一个填充了给定函数结果的新数组;这里需要注意的是赋值运算符的结果是赋值本身,事实上,如果你运行
let x = 5; console.log(x = 4);
你得到 4 作为输出。
通过遵循此行为:
n => n * 2
- 将结果放在n * 2
相应的数组单元格中n => n *= 2
- 将结果放入n *= 2
对应的数组单元格中,结果就是n * 2
添加回答
举报
0/150
提交
取消