概述
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 入门》——阮一峰
最后
以上就是开放小蝴蝶为你收集整理的ECMAScript求索 · const 关键字的全部内容,希望文章能够帮你解决ECMAScript求索 · const 关键字所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复