
声明let
let 声明的变量不存在预解析
console.log(flag)
var flag = 123 //123
let flag = 456 //undefined
let声明的变量不允许重复(在同一个作用域内)
let flag = 123;
let flag = 456;
console.log(flag); //Identifier 'flag' has already been declared
ES6引入了块级作用域,块内部定义的变量,在外部是不可以访问的
if(true){
var flag = 123;//123
let flag = 123;//flag is not defined
}
console.log(flag)
{
// 这里是块级作用域
let flag = 111;
console.log(flag); //111
}
console.log(flag);//flag is not defined
for (let i = 0; i < 3; i++) {
// for循环括号中声明的变量只能在循环体中使用
console.log(i);//0,1,2
}
console.log(i); i is not defined
在块级作用域内部,变量只能先声明再使用
if(true){
console.log(flag); //flag is not defined
let flag = 123;
}
声明const
const用来声明常量,const声明的常量不允许重新赋值
const n = 1;
n = 2;
console.log(n) //Assignment to constant variable.
const声明的常量必须初始化
const abc;
console.log(abc);//Missing initializer in const declaration