为什么可以重新分配包含对常量的引用的变量?

时间:2018-11-18 10:21:45

标签: javascript ecmascript-6

为什么可以重新分配对常量的引用的变量?

const a = {}

var b = a

console.log(a, b)

b = { a: 1 }

console.log(a, b)

这不是我所希望的那样(例如,constlet变量的“声明类型”(这里是正确的术语?), var)在分配时不传递,而仅在声明时定义。

关于它的详细工作原理,是否有人明确引用?

1 个答案:

答案 0 :(得分:3)

  

我假定变量的类型(constletvar)在分配时不传递,而在声明时才定义。

是的。 a被声明为constb被声明为var。它们是两个不同的变量,分配时对此没有任何改变。您可以为b分配一个新值(您执行两次),但是在初始化后不能为a分配一个新值。在a的赋值中使用{em> b值根本不重要,这个值是什么也无关紧要(原始,可变对象或不可变对象)。