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 - referenceRun Code Online (Sandbox Code Playgroud)
这是一个棘手的问题。
从技术上讲,find总是返回一个值,但如果您要查找的项目是对象,则该值可能是引用。尽管如此,它仍然具有价值。
这与这里发生的情况类似:
let a = { some: "object" };
let b = a;
Run Code Online (Sandbox Code Playgroud)
您正在将变量的值a复制到b. 碰巧该值是对该对象的引用{ some: "object" }。