JS,当一个变量被赋值给另一个变量时,它是否包含对该变量的引用或该变量在那一刻所持有的值?[复制]

JS, when a variable is assigned to another variable, does it hold a reference to that variable or the value that that variable holds at that moment? [duplicate]

提问人:GWorking 提问时间:5/29/2020 更新时间:5/29/2020 访问量:165

问:

提供此代码

let myVar = 'hey'
let myVar2 = myVar
myVar = 'what'

当我分配 时,我正在分配对 的引用?或者在分配中得到解决,我正在分配当时具有的值?let myVar2 = myVarmyVar2myVarmyVar

我怀疑是否

  • myVar2保留对原始文件的引用(由于它已被第二次分配覆盖,因此不再可用myVarmyVar = 'what')
  • 或从一开始就保持任何值,无论该变量稍后将被覆盖myVar2myVar
JavaScript 按引用传递

评论

1赞 VLAZ 5/29/2020
它总是按值传递。 并且从未真正抱过对方。只是碰巧相似的内容。myVarmyVar2
1赞 CherryDT 5/29/2020
...但是,“保存”数组或对象的变量的“值”实际上始终是对该对象的引用。不过,此引用本身仍作为值处理,它不是对前一个变量的引用,而是对对象本身的引用。所以:myVar = {a: 1}; myVar2 = myVar; console.log(myVar === myVar2) /* true */; myVar2.b = 2; console.log(myVar) /* {a: 1, b: 2} */; myVar2 = 'abc'; console.log(myVar) /* {a: 1, b: 2} */;
0赞 slebetman 5/29/2020
字符串、数字、布尔值、null = 值。对象,数组 = 引用。undefined 很奇怪(你可以以任何一种方式争论它 - 旧版本的 JavaScript,如在 IE7 或 Netscape4 上运行的 JavaScript 肯定会被引用。较新版本的 javascript 使 undefined 不可变)
0赞 Bergi 5/29/2020
@slebetman 该值始终是不可变的。(当然,可以被覆盖,但这不会改变任何变量的值)。undefinedwindow.undefined
0赞 Bergi 5/29/2020
@CherryDT 即使对于对象,变量也始终包含引用该对象的引用。该变量永远不会成为或保留对另一个变量的引用。

答: 暂无答案