直接上代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
</head>
<body>
<button>test</button>
<script>
var arr1 = new Array();
var arr2 = new Array();
arr1 = [1,2,3,4,5];
var button = document.getElementsByTagName('button')[0];
button.onclick = function(){
console.log(arr1);
arr2.push(arr1);
console.log(arr2);
console.log(arr2[0]);
arr1.pop();
console.log(arr1);
console.log(arr2[0]);
}
</script>
</body>
</html>
我测试的结果:
有2个不明白的地方:
1.箭头指的地方为什么没有显示出5?
2.从头到尾没有弹出arr2,为什么arr2会随着arr1的变化而变化?
解决方案?
如果我只是想在操作arr1的时候,不影响arr2,有没有什么办法?
回答
1.箭头指的地方为什么没有显示出5?
执行line 3的时候,控制台打出 [Array[5]] 是正确的,但是当你点击之前的小箭头展开[]中具体内容的时候,所有语句都执行完,arr1的最后一个元素被你pop()了所以此时只有4个items
2.从头到尾没有弹出arr2,为什么arr2会随着arr1的变化而变化?
因为arr2[0]内存指向的就是arr1,所以arr1变了,arr2[0]也会跟着变
解决方案?
使用克隆大法,把arr1克隆一份再赋值给arr2[0]