var-let-const
使用var关键字声明的全局作用域变量属于window对象。
使用let关键字声明的全局作用域变量不属于window对象。
使用var关键字声明的变量在任何地方都可以修改。
在相同的作用域或块级作用域中,不能使用let关键字来重置var关键字声明的变量。
在相同的作用域或块级作用域中,不能使用let关键字来重置let关键字声明的变量。
let声明的变量只在let命令所在的代码块内有效,const声明一个只读的常量,一旦声明,常量的值就不能改变,var在全局范围内有效
let只能声明一次,var可以声明多次
for循环计数器很适合用let(因为let只在本轮循坏中有效)
let不存在变量的提升,var会变量提升:
变量 b 用 var 声明存在变量提升,所以当脚本开始运行的时候,b 已经存在了,但是还没有赋值,所以会输出 undefined。
变量 a 用 let 声明不存在变量提升,在声明变量 a 之前,a 不存在,所以会报错。
let关键字在不同作用域,或不用块级作用域中是可以重新声明赋值的。
在相同的作用域或块级作用域中,不能使用const关键字来重置var和let关键字声明的变量。
在相同的作用域或块级作用域中,不能使用const关键字来重置const关键字声明的变量
const 关键字在不同作用域,或不同块级作用域中是可以重新声明赋值的
var关键字定义的变量可以先使用后声明。
let关键字定义的变量需要先声明再使用。
const关键字定义的常量,声明时必须进行初始化,且初始化后不可再修改。