// 声明变量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;报错