我知道ES6还没有标准化,但是 目前很多浏览器都支持 JS中的 const
关键字。
在规范中,写道:
常量的值不能通过重新赋值而改变,并且常量不能重新声明。正因为如此,虽然声明一个常量而不初始化它是可能的,但这样做是没有用的。
当我做这样的事情时:
const xxx = 6;
xxx = 999;
xxx++;
const yyy = [];
yyy = 'string';
yyy = [15, 'a'];
我看到一切都还可以: xxx
6
yyy
[]
但是如果我这样做 yyy.push(6); yyy.push(1);
,我的常量数组就被改变了。现在它是 [6, 1]
顺便说一句,我仍然无法用 yyy = 1;
改变它。
这是一个错误,还是我遗漏了什么?我在最新的 chrome 和 FF29 中试过了
原文由 Salvador Dali 发布,翻译遵循 CC BY-SA 4.0 许可协议
文件指出:
当你添加到一个数组或对象时,你并没有重新分配或重新声明常量,它已经被声明和分配,你只是添加到常量指向的“列表”中。
所以这很好用:
和这个:
但这些都不是: