【发布时间】:2019-02-16 08:48:12
【问题描述】:
在下面的代码中,我预计 3 个日志的结果会相同。
但他们不是。
var m = (function () {
var arr = [
{a: 1, b: 2},
{c: 3, d: 4}
];
return {
getArr: function () {
return arr;
}
};
})();
var myArr = m.getArr();
console.log(myArr);
myArr.pop();
console.log(m.getArr());
确保数组不作为引用传递的最佳方法是什么?
使用return arr.map()?
【问题讨论】:
-
您可以使用 return arr.slice() - 但是请注意,这只是一个浅拷贝,您仍然会遇到问题。
-
在 Javascript 中,所有对象都有效地“通过引用传递”。 (这并不完全正确,但可以很容易地想到它。)数组也是对象,所以这就是发生这种情况的原因。请注意,原始值(字符串、数字、布尔值)总是“按值传递”。 This question 可能有助于进一步解释
标签: javascript