gpt4 book ai didi

javascript - 为什么使用相同的函数返回不同的对象来映射数组?

转载 作者:行者123 更新时间:2023-11-28 13:17:30 25 4
gpt4 key购买 nike

我想知道为什么 v.map(...) 不等于 v.map(...) 使用相同的函数来做 map

var v = [1,2,3,4,5]
v.map(function(a) {return a+1}) === v.map(function(a) { return a+1;})

在节点 repl 上运行此命令,我得到第二个表达式的结果为 false

最佳答案

当比较非基元的相等性时,Javascript 通过引用相等性来检查相等性 - 也就是说,正在测试的两个对象是否引用内存中的同一个对象?

在这种情况下,它们不会 - .map 返回一个新对象,并且在同一个数组上运行 .map 两次不同的时间将返回两个不同的引用 - 无论如何映射时完成的计算。

总结一下:

v === v 为 true,因为 v 引用内存中的同一个对象[1,2,3,4,5] === [1,2,3,4,5] 为 false,因为两个数组是内存中的不同对象(即比较引用,而不是值) ).map 将始终返回数组的新实例 - 因此结果不能等于另一个 .map 语句

关于javascript - 为什么使用相同的函数返回不同的对象来映射数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36392787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com