在ES6中个定义变量的关键字是 const,let,var , 但是const它经常被误会为一个“常量”。在ES6中, const 代表一个值的 常量索引 (事实上绝大多数语言都提供这样的功能)。换句话说,变量名字在内存中的指针不能够改变,但是指向这个变量的值 可能 改变。
这里有一个简单的例子。在下面的例子中我们可以创建一个拥有常量索引的数组变量。我们在之后添加值到这个数组中并不改变这个索引,一切都可以运行起来:
const value= [ ] ;
value. push ( “const” ) ;
console . log ( value) ;
但是,如果我们尝试修改变量索引到一个新的数组——即使是和现在内容一样的数组——我们将获得一个SyntaxError (“Assignment to constant variable”):
const names = [ ] ;
names = [ ] ; // Error!
当然,如果你拥有一个指向string或者number的 const ,当然这里就不会有任何可以修改的值。所有String和Number的方法返回 新的 值(对象)。