简介
js声明变量有3个关键字let
、const
和var
。其中let
和const
和其他语言比较一直,都是块级作用域,var
属于函数作用域,而且还具有变量提升这种其他语言少见的特性。
const
const声明一个常量,与其他语言一致,不允许对常量赋值。
let
let 声明一个块级作用域变量
// myLetVariable 在这里 *不能* 被引用
for (let myLetVariable = 0; myLetVariable < 5; myLetVariable++) {
// myLetVariable 只能在这里引用
}
// myLetVariable 在这里 *不能* 被引用
var
使用var
声明的变量在它所在的整个函数都是可见的。
// myVarVariable在这里 *能* 被引用
for (var myVarVariable = 0; myVarVariable < 5; myVarVariable++) {
// myVarVariable 整个函数中都能被引用
}
// myVarVariable 在这里 *能* 被引用
变量提升
var关键字声明的变量,无论实际声明的位置在何处,都会被视为声明在函数的顶部(如果声明不在任意函数内,则视为在全局作用域的顶部)
console.log(a); //undefined
var a = 1;
console.log(a); // 1
相当于
var a ;
console.log(a);
a = 1;
console.log(a);