Introduction 1. ES6
2. ES6 the new grammar
2.1 let
<script type="text/javascript">
/* --------let关键字就是用来声明变量的-------- */
// let a = 10;
// console.log(a);//10
/* --------使用let关键字声明的变量具有块级作用域-------- */
// if (true) {
// let b = 20;
// console.log(b);//20
// if (true) {
// let c = 30;
// }
// console.log(c);//报错
// }
// console.log(b)
/* -------在一个大括号中 使用let关键字声明的变量才具有块级作用域 var关键字是不具备这个特点的--------- */
// if (true) {
// let num = 100;
// var abc = 200;
// }
// console.log(abc); //200
// console.log(num); //报错
/* -------防止循环变量变成全局变量--------- */
for (let i = 0; i < 2; i++) {}
console.log(i); //报错
</script>
/*-----使用let关键字声明的变量没有变量提升------*/
console.log(a); //报错 必须先声明再使用
let a = 100;
In the variable declaration within a block-level role, it and this whole block-level scope is bound, not by external influences
/* -------使用let关键字声明的变量具有暂时性死区特性------- */
var num = 10
if (true) {
console.log(num); //报错 因为{}内外的num毫无关系,这里在{}内先使用后定义就会报错;
//{}内的num不会向上一级作用域查找num
let num = 20;
}