共计 1398 个字符,预计需要花费 4 分钟才能阅读完成。
本节咱们学习 ES6
中的 const
命令,const
也是 ES6
中新增的一个命令。const
申明一个只读常量,一旦申明常量,就必须立刻初始化。扭转常量的值或者仅申明但不赋初始值都会报错。
const 申明
const
申明一个只读的常量,一旦申明,常量的值就不能扭转。实际上,不能改变的不是值,而是变量指向的那个内存地址所保留的数据不得改变。
示例:
应用 const
命令申明变量其实和 let
的应用办法差不多,例如申明一个常量 a
:
const a = 1;
console.log(a);
常量申明后必须初始化
const
申明常量后必须立刻初始化,不能留到当前赋值。
示例:
const a;
a = 1;
console.log(a);
报错信息:
SyntaxError: Missing initializer in const declaration
报错信息提醒咱们,const
申明中短少初始值设定项,也就是说没有赋初始值。
常量申明后不能够扭转
应用 const
命令申明一个常量后,常量的值便不能够扭转,否则会报错。
示例:
例如申明 a
并将之赋值为 1 之后,批改 a
的值为 10:
const a = 1;
a = 10; // 常量的值不可扭转
console.log(a);
报错信息如下所示:
TypeError: Assignment to constant variable.
const 的其余个性
const
和 let
还是有很多类似点的,例如只在申明所在的块级作用域内无效。
示例:
{const a = 1;}
console.log(a);
报错信息如下,提醒咱们 a
没有被申明:
ReferenceError: a is not defined
除此之外,还有 const
命令申明的常量也是不晋升的,同样存在暂时性死区,只能在申明的地位前面应用。
示例:
if(true){console.log(PI);
const PI = 10;
}
报错信息如下,不能在初始化之前调用常量 PI
:
ReferenceError: Cannot access 'PI' before initialization
const
申明的常量,也与 let
一样不可反复申明。
示例:
var a = 10;
let b = 20;
// 以下两行都会报错
const a = 100;
const b = 200;
报错信息如下所示:
SyntaxError: Identifier 'a' has already been declared
const 实质
const
实际上保障的,并不是变量的值不得改变,而是变量指向的那个内存地址所保留的数据不得改变。
- 对于简略类型的数据,例如数值、字符串、布尔值,值就保留在变量指向的那个内存地址,因而等同于常量。
- 但对于复合类型的数据,例如对象和数组,变量指向的内存地址,保留的只是一个指向理论数据的指针,
const
只能保障这个指针是固定的(即总是指向另一个固定的地址),至于它指向的数据结构是不是可变的,就齐全不能管制了。
示例:
咱们来看上面这个例子:
const xkd = {};
xkd.prop = 123;
console.log(xkd.prop); // 输入:123
xkd = {}; // 输入:TypeError: Assignment to constant variable.
下面代码中,常量 xkd
贮存的是一个地址,这个地址指向一个对象。不可变的只是这个地址,即不能把 xkd
指向另一个地址,但对象自身是可变的,所以仍然能够为其增加新属性。
想看更多能够查看:https://www.9xkd.com/