声明变量的六种方式:var ,function,let,const,class,import.
var允许重复声明,let不允许重复声明
在相同的作用域中,如果使用var/function关键词声明重复的变量,是不会有影响的
var a = 1;
var a = 2
console.log(a);
let和const就不行,只要存在这个变量,但不包括局部变量,就会是语法错误。
const声明一个只读常量,一旦声明,常量的值就不会改变,而且必须初始化。
let比var更加严谨,let能解决typeof检测时出现的暂时性死区问题。
console.log(typeof b);
let b; //Cannot access 'b' before initialization
let创建的全局变量没有给window设置对应的属性
var c = 3;
console.log(c);
console.log(window.c);
用var声明的全局变量也相当于给全局对象window加了一个相应的属性 。
let c = 3;
console.log(c);//3
console.log(window.c);//undefined
带let的:仅仅在全局作用域下声明了一个变量b(全局变量), * 并未给全局对象window增加对应的属性c