对于这样一个数组 var initData=[1, "s", {a: "d", b: x => x*2} ];
以下3种复制的方法都有什么区别?
//method 1
var data = initData;
//method 2
var data = initData.slice();
//method 3
var data=[];
for (var variable in initData) {
data[variable] = initData[variable];
}
对于这样一个数组 var initData=[1, "s", {a: "d", b: x => x*2} ];
以下3种复制的方法都有什么区别?
//method 1
var data = initData;
//method 2
var data = initData.slice();
//method 3
var data=[];
for (var variable in initData) {
data[variable] = initData[variable];
}
第一个是直接值传递,其实是同一个数组;
第二个是一个新的复制得到的数组;
第三个是一个新的数组,但是对于{a: "d", b: x => x*2} 这样的value,还是值传递,是同一个value。
1 回答858 阅读✓ 已解决
1 回答1.1k 阅读
2 回答774 阅读
2 回答622 阅读
2 回答607 阅读
1 回答682 阅读
2 回答529 阅读
这不是复制,只是赋值,将引用从一个传递到另一个
这是复制,
data的元素将与initData一模一样这不仅仅是复制,除了 2 的功能还有属性拷贝。比如你先执行
initData.property = 3,复制后再执行console.log(data.property),2 的结果是undefined, 3 的结果是3。