为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

白板的微信 2022-10-27 16:12:47
以下代码中对 Array.prototype.map 的两次调用都返回数组 [2, 4, 6]。解释两行代码之间的细微差别。哪一个是首选,为什么?[1, 2, 3].map(n => n *= 2); [1, 2, 3].map(n => n * 2);我试图将一个视为重新分配,另一个视为突变
查看完整描述

3 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

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



查看完整回答
反对 回复 2022-10-27
?
斯蒂芬大帝

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));


查看完整回答
反对 回复 2022-10-27
?
撒科打诨

TA贡献1934条经验 获得超2个赞

应该没有什么区别。两者给出相同结果的原因是.map()总是返回一个填充了给定函数结果的新数组;这里需要注意的是赋值运算符的结果是赋值本身,事实上,如果你运行

let x = 5;
console.log(x = 4);

你得到 4 作为输出。

通过遵循此行为:

  • n => n * 2- 将结果放在n * 2相应的数组单元格中

  • n => n *= 2- 将结果放入n *= 2对应的数组单元格中,结果就是n * 2


查看完整回答
反对 回复 2022-10-27
  • 3 回答
  • 0 关注
  • 77 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信