为什么以下Javascript代码段的行为如下?

时间:2016-12-16 06:49:12

标签: javascript arrays

var arr = ["d","b","c"]
var a1 = arr
arr.sort()
arr = ["a","b","w"]

console.log(a1) //printing [ 'b', 'c', 'd' ]

在上面的代码片段中,打印a1时会反映出.sort()操作。但是,当我重新分配arr时,为什么a1在打印时没有提到这个新值?

1 个答案:

答案 0 :(得分:2)

var arr = ["d","b","c"]
  • 创建数组
  • arr的值设置为对该数组的引用
var a1 = arr
  • arr的值复制到a1,现在两个变量都包含对该数组的引用
arr.sort()
  • 对数组进行排序
arr = ["a","b","w"]
  • 创建第二个数组
  • arr的值设置为对该数组的引用
  • a1未经修改,其值仍然是对第一个数组的引用