Array.prototype.map,以及这两个例子的区别

以下代码中对 Array.prototype.map 的两次调用都返回数组 [2, 4, 6]。解释两行代码之间的细微差别。哪一个是首选,为什么?

[1, 2, 3].map(n => n *= 2);
[1, 2, 3].map(n => n * 2);

我试图将一个视为重新分配,另一个视为突变


白板的微信
浏览 78回答 3
3回答

蓝山帝景

对于您的第一种情况,您正在重新分配,但由于被丢弃n,因此该副作用并不真正可见。n

斯蒂芬大帝

第一行可以写成如下。所以你只是重新分配 nconsole.log([1, 2, 3].map(n => n = n*2));// Like this just reassigning n with n*2 after every iterationconsole.log([1, 2, 3].map(n => n * 2));

撒科打诨

应该没有什么区别。两者给出相同结果的原因是.map()总是返回一个填充了给定函数结果的新数组;这里需要注意的是赋值运算符的结果是赋值本身,事实上,如果你运行let x = 5; console.log(x = 4);你得到 4 作为输出。通过遵循此行为:n => n * 2- 将结果放在n * 2相应的数组单元格中n => n *= 2- 将结果放入n *= 2对应的数组单元格中,结果就是n * 2
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript