你的位置:首页 > Java教程

[Java教程]ES6之const命令


一直以来以ecma为核心的js始终没有常量的概念,es6则弥补了这一个缺陷;

   const foo='foo';   foo='bar';//TypeError: Assignment to constant variable.

 上例声明了一个基本类型的常量,如过试图修改初始值则会报错;如果是引用类型的值同样适用,但是有一点需要注意,举例说明:

   const foo=[];     foo=[1];//Assignment to constant variable.

正常报错,没毛病,再看:

  const foo=[1,2,3];  foo[1]=4;  console.log(foo)//[1, 4, 3]

 这怎么没报错?而且还能修改成功? 这两个例子不一样的地方在于前者是修改了指针(需熟悉js 引用类型)对应的内容改变了,后者则不是指向依然没变 但是指向对象的内容发生改变了,对于foo而言我只是一个指针负责指向对应的对象 至于对象内容是什么就不管我的事了所以可以修改;如果不想让内容也改变也行使用另一个方法;

  const foo=Object.freeze([1,2,3]);  foo[1]=4;  console.log(foo)//[1, 2, 3]

 这样就不用担心被修改了;