es6 的const命令声明一个只读的常量,一旦声明,常量的值就不能改变,这意味着, const 一旦声明变量,就必须立即初始化,不能留到以后赋值
const PI = 3.14159;
PI //3.14159;
PI = 3;
//TypeError: Assignment to constant variable.
//类型错误:为常量赋值
const r;
//SyntaxError: Missing initializer in const declaration
//语法错误:在使用const声明时未初始化
上面代码表明改变常量的值会报错,const 一旦声明变量,就必须立即初始化
const 的作用域与 let 命令相同:只在声明所在的块级作用域内有效。
if (true) {
const MAX = 5;
}
MAX // Uncaught ReferenceError: MAX is not defined
const 命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。
if (true) {
console.log(MAX); // ReferenceError
const MAX = 5;
}
上面代码在常量 MAX 声明之前就调用,结果报错。
const 声明的常量,也与 let 一样不可重复声明。
var message = "Hello!";
let age = 25;
// 以下两行都会报错
const message = "Goodbye!";
const age = 30;
参考:ECMAScript6 入门 (第三版)