1.var 会进行预解析
=> let / const 不会进行预解析,必须先定义后使用
=> let / const 不可以重复变量名,
=> var 没有块级作用域。let / const 有块级作用域
=> 块级作用域
+ 被代码块限制变量的使用方法
+ var:只有函数私有作用域才能限制使用范围
+ let/const:只要是能书写代码段的{}都可以书写
if (true) {
var num = 200;
}
console.log( num ); // 200 因为var没有块级作用域的概念,var num就是全局变量
if (true) {
let num = 200;
}
console.log( num ); //error 因为let定义的变量存在块级作用域,离开了这个作用域就无法使用