// 声明变量let和const
// let 声明的变量不存在预解析
console.log(flag);
var flag = 123; undefined
let flag = 456; /*ReferenceError: flag is not defined*/
// ------------------------
// let声明的变量不允许重复 (在同一个作用域)
var flag = 123;
var flag = 456;
console.log(flag);456
let flag = 123;
let flag = 456;
console.log(flag);报错
// ----------------------------
// ES6引入了块级作用域
// 块内定义的变量,在外部是不可以访问的
if(true){
var flag = 123;可以访问
let flag = 123;不可以访问
}
console.log(flag);
// 其他例子:
// 1、
{
这里是块级作用域
let flag = 111;
console.log(flag);可以访问
}
console.log(flag);不可以访问
// 2、
for (let i = 0; i < 3; i++){
for循环括号中声明的变量只能在循环体中使用
console.log(i);可以访问
}
console.log(i);不可以访问
// -------------------------
// 在块级作用域内部, 变量也只能先声明再使用
if(true){
console.log(flag);<声明之前的空间是暂时性死区
let flag = 123;flag is not defined
}
// =================================
// const用来声明常量
// const声明的常量不允许重新赋值
const n = 1;
n = 2;报错
// -----------------------------------
// const声明的变量必须初始化
const abc;报错