ECMAScript变量是松散类型的,变量可以保存任何类型的数据,每一个变量只不过是保存任意值的命名占位符。有三个关键字可以声明变量:var const 和let.var在所有版本中均可以使用。let与const只能在ECMAScript6以及更晚中进行适应。
1.var关键字
1.1不初始化的情况下,变量会保存一个特殊的值undefined。
var number
1.2定义多个变量,可以在一条语句中用逗号分隔变量(以及可选初始化)
var a=1,
found=false,
age=19
1.3声明提升
所谓的提升就是把所有变量的声明提升到函数作用域的顶部,使用声明同一个变量也没有问题。
function foo(){
var age=11;
var age=12;
var age=23;
console.log(age);
}
foo()//23
2.let关键字
2.1let声明范围是块作用域,var的声明范围是函数作用域。
let声明不允许同一个作用域中出现冗余。不然胡导致报错。
2.2全局声明
let与var的不同是,let在全局作用域中不会成为window对象,也就是在全局中不能用this.出来。
2.3for循环中的let
var for循环定义的迭代变量会渗透到循环体的外部。
for(var i=0;i<5;++i){
}
console.log(i)//5
使用let循环的迭代变量作用域仅限于for循环的内部
for(leti=0;i<5;++i){
}
console.log(i)//没有定义
3.const声明
3.1const声明变量的同时必须同时进行初始化变量
其他的基本用法和let相同