ECMAScript求索 · const 关键字

ES6规定使用 const 关键字来声明一个只读的常量,一经声明就无法修改,下面让我们一起来看看const的特性与使用方法。

0x01.块级作用域

与let关键字类似,const关键字遵循ES6块级作用域规则,const关键字所定义的常量将会受到由一对大括号{}包裹的块级作用域的限制,下面代码段中,a变量被定义在顶级作用域中,而b变量被定义在块级作用域中,从代码执行结果可以看出块级作用域中可以访问顶级作用域所定义的常量,而在块级作用域之外访问块级作用域内部定义的常量,则解释器给出错误信息:Uncaught ReferenceError: b is not defined.提示用户b没有被定义。

const a = 1;
{
    const b = 2;
    console.log(a); // 1
    console.log(b); // 2
}
console.log(a); // 1
console.log(b); // Uncaught ReferenceError: b is not defined

0x02.const关键字不会被变量提升

let关键字的学习中,我们了解了解释器对于let与var所定义的变量不同的执行机制,和let关键字一样,const关键字所定义的常量也同样不遵循变量提升机制,所以不能在声明之前使用其常量,否则解释器依然会给出错误信息:Uncaught ReferenceError: a is not defined.提示用户常量没有被定义。更多变量提升的知识,请查看。

console.log(a); // Uncaught ReferenceError: a is not defined

const a = 1;

 0x03.不可以重复声明

与let关键字一样,const关键字定义的常量不能被重复声明,否则解释器会给出错误信息:Uncaught SyntaxError: Identifier 'a' has already been declared.提示用户常量已经被定义了。

const a = 1;

const a = 2; // Uncaught SyntaxError: Identifier 'a' has already been declared

0x04.不会给window对象增加属性

与let关键字一样,在顶级作用域中使用const关键字同样不会给顶级对象window增加额外的属性。

const a = 1;

console.log(window.a); // undefined

0x05.const声明常量时必须赋值

与let关键字不同,const关键字在声明常量时必须赋值,否则解释器给出错误信息:Uncaught SyntaxError: Missing initializer in const declaration.提示用户缺失了const初始化的操作,所以在使用const的过程中,一旦声明,必须赋值。

const a; // Uncaught SyntaxError: Missing initializer in const declaration

a = 1;

let b; // 这是合法的

0x06.const定义的值不能被修改

使用const定义的值是一个只读的常量,不能被修改。一旦用户做出了修改const关键字定义的值的操作后,解释器将会给出错误信息:Uncaught TypeError: Assignment to constant variable.提示用户不能修改由const关键字定义的值。

const a = 2;

a = 1; // Uncaught TypeError: Assignment to constant variable.

0x07.总结

以上就是在学习ES6 const关键字时所了解到的基础的知识,有待补充和完善,如在叙述中存在问题,还请不吝赐教,指出问题所在。

0x08.参考资料

let 和 const 命令 - 《ECMAScript 6 入门》——阮一峰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值