序号 | 区别 | var | let | const |
---|---|---|---|---|
1 | 变量提声 | 有 | 无 | 无 |
2 | 局部变量 | 函数内是 | 函数内是、代码块内是 | 函数内是、代码块内是 |
3 | 声明变量后修改变量值 | 可以 | 可以 | 基础类型不可以,对象可以通过点方法或者[]来添加属性或者值 |
4 | 定义全局变量后绑定到windows上 | 可以 | 不可以 | 不可以 |
测试用例:
1
变量提声就是提前声明,再赋值
console.log(a)
console.log(b)
console.log(c)
var a = 1;
let b = 2;
const c = 3;
// undefined
// Uncaught ReferenceError: Cannot access 'b' before initialization
// Uncaught ReferenceError: Cannot access 'c' before initialization
2-
直接给变量赋值是全局变量
var test = function () {
var testVar = 1;
let testlet = 2;
const testconst = 3;
oo = 9;
};
test();
console.log(testVar);
console.log(testlet);
console.log(testconst);
console.log(oo);
// Uncaught ReferenceError: testVar is not defined
// Uncaught ReferenceError: testlet is not defined
// Uncaught ReferenceError: testconst is not defined
// 9
if(true){
var testVar = 1;
let testlet = 2;
const testconst = 3;
oo = 9;
}
console.log(testVar);
console.log(testlet);
console.log(testconst);
console.log(oo);
// 1
// Uncaught ReferenceError: testlet is not defined
// Uncaught ReferenceError: testconst is not defined
// 9
3
4
5
全局变量可以直接赋值,这样的变量也可以绑定在windows上面