在 HTML 中, 全局作用域是针对 window 对象,var关键字定义的全局作用域变量属于 window 对象,而let定义的不属于。注意这是在浏览器环境下,如果是Node则无window对象。
var a = 0; console.log(window.a) // 0 let b = 1; console.log(window.b) // undefined const其实const和let非常非常类似,let该有的特性,const都有,不同就是,第一,const不允许“修改”变量,第二const必须初始化,而let不需要
const a = 0; a = 1; // TypeError: Assignment to constant variable const b; // SyntaxError: Missing initializer in const declaration不过const定义的不是真正意义上的常量,如果定义的是一个对象或者数组,其实是可以变化的,只不过不能将不同的数据类型分配给他,一般可以记:const初始化定义后,不可使用 = 赋值。
const a = {} a.b = 1; console.log(a) // { b: 1 } a = 1 // TypeError: Assignment to constant variable