var arr1 = [1, 2, { e: 1 }]
var arr2 = [4, 5, 6]
var arr3 = [...arr1, ...arr2]
console.log(arr3);// [1, 2, {e:8}, 4, 5, 6] //为什么这里e的值为8而不是1
//for (var i = 1; i < 100000; i++) {
// console.log(i);这里是为了让下个log延迟打印
// }
arr3[2].e = 8
console.log(arr3);// [1, 2, {e:8}, 4, 5, 6]
刚才第一次提交,人工审核,发现错误,不让编辑,现重新描述
根据js的执行顺序,第一次log时我还没有改变arr3[2].e的值,我是先打印后改变值的,为什么第一次打印出来e的值也为8?
这是对基本类型和引用类型的理解不透彻,你在浏览器上点开那个引用类型的时候,他会根据stack里存的地址去heap里找东西,所以你看到的东西都是最新的,你把前面打印的东西JSON.stringify一下,再打印看看
可以参看下这篇:https://segmentfault.com/a/11...