1.var 定义的变量只有全局作用域和函数作用域,在if for while 里无作用域,即为全局作用域,在方法中作用域为方法体内。
2.let定义的变量 在全局,函数体,if for while等有{}的体中都有块级作用域。
3.let定义的变量在
let a = 12 ;
function test() {
console.log(a);//暂时性死区
let a = 5;
}
会报错tdz,而使用var会报undefined
4.var 允许重复定义变量,let不允许重复定义变量;
5.for循环 for循环()里面是父级作用域,块中{}是子集作用域。
6. var arr = [];
for (var i=0 ;i < 10; i++) {
arr[i] = function() {
console.log(i);
}
}
arr[5](); //结果为10
将var 改为let就能得到正确的结果。
7.const 特性和let一样
const a = 12;
const必须在定义完就给值。并且不能修改,修改了会报错。
8.const arr = ["a","b"];
arr.push("c"); //可以成功。
因此可以通过const arr = Object.freeze(["a","b"]);
arr.push("c"); //不成功被冻结了。
9.iife立即执行匿名函数
以前(function(){})();
现在可以{}就可。