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(){})();
现在可以{}就可。
本文详细介绍了JavaScript中var、let及const三种变量声明方式的区别,包括它们的作用域特性、重复声明行为、暂时性死区等问题,并通过具体示例说明了不同声明方式在循环中的表现。
427

被折叠的 条评论
为什么被折叠?



