- var
1.可以使用window.变量名访问,浏览器中全局对象是window,var声明对象方法可能污染全局环境
2.可以重复声明同名变量
3.变量自动提升,在声明变量前使用变量值为undefined
console.log(testVar);
var testVar = 3;
console.log(window.testVar);
- let
1.不会变量自动提升,在声明变量前使用变量会报错
2.只在声明变量的块级作用域内可以访问
3.不能在同一作用域内重复声明
4.可以只声明不赋值
console.log(testLet);
let testLet = 23;
let testLet = 2;
function printTest() {
let out = 2;
}
console.log(out);
- const
1.必须声明时赋值
2.赋值后不能改变变量的内存地址
3.不会变量自动提升
4.不能重复声明
5.对象的属性可以添加和改变,对于想要冻结对象可以使用Object.freeze()
const testConst;
const testConst = {name:'jay',age:23};
console.log(testConst.age);
testConst.age=33;
console.log(testConst.age);
const obj = {name:'lin',age:11};
Object.freeze(obj);
obj.age = 23;
console.log(obj.age);
'use strict';
obj.age = 23;