【发布时间】:2016-07-05 19:25:28
【问题描述】:
如果我没记错的话,variable 名称正在使用的指针在内存中无法更改,但变量 points 的内容可能会更改。
let name = "google";
const foo = name;
console.log(foo); //prints google
name = "yahoo";
console.log(foo); //prints google again instead of yahoo
它不应该打印 yahoo,因为变量名的值已更改.. 谁能解释一下。
另一个例子,它的变化......
const foo = [];
foo.push("test");
console.log(foo); // outputs ["test"]
我在这里很困惑,谁能解释一下。
【问题讨论】:
-
第一个例子并不特定于常量。原始字符串被复制,没有传递引用。在第二种情况下,引用没有改变,对象的属性不是常量,只有对象与引用
foo的绑定是常量。要实现具有常量属性的对象,请使用const foo = Object.freeze([]);。简而言之,const foo =…;只是阻止你使用未来foo =…;。 -
const表示允许突变const xs = [1,2]; xs.push(3),禁止重新分配const ys = [1,2]; ys = [1,2,3] // fails
标签: javascript ecmascript-6 constants