Array.find 是否返回值或引用?我的意思是按值传递还是按引用传递?

MdJ*_*009 4 javascript arrays pass-by-reference pass-by-value

什么 Array.find 方法返回值是找到的值的某些特定副本或来自数组的引用。我的意思是它是按值传递还是按引用类型传递?

Utk*_*nos 10

来自MDN(强调他们的):

find() 方法返回提供的数组中满足提供的测试函数的第一个元素

它是否返回值的副本或引用将遵循正常的 JavaScript 行为,即如果它是原始类型,它将是一个副本,如果它是一个复杂类型,它将是一个引用。

let foo = ['a', {bar: 1}];
let a = foo.find(val => val === 'a');
a = 'b';
console.log(foo[0]); //still "a"
let obj = foo.find(val => val.bar);
obj.bar = 2;
console.log(foo[1].bar); //2 - reference
Run Code Online (Sandbox Code Playgroud)


ibr*_*rir 5

这是一个棘手的问题。

从技术上讲,find总是返回一个值,但如果您要查找的项目是对象,则该值可能是引用。尽管如此,它仍然具有价值。

这与这里发生的情况类似:

let a = { some: "object" };

let b = a;
Run Code Online (Sandbox Code Playgroud)

您正在将变量的a复制到b. 碰巧该值是对该对象的引用{ some: "object" }