let、const、var区别
1.块级作用域包含let和const、var不存在块级作用域
{
let a = 10;
const b = 20;
var c = 30;
}
// console.log(a); not defined
// console.log(b); not defined
console.log(c); //30
2.var存在变量提升
// console.log(x); undefined
var x = 10;
console.log(x);
3.var声明的变量为全局变量,会将该变量添加为全局对象属性
var globalVar = "I am global";
console.log(window.globalVar);
4.let创建变量可以更改指针指向(重新赋值),是const声明变量不允许改变指针指向
// 对于对象,let 声明的变量可以重新指向一个全新的对象,也可以修改对象的属性
// let:
let obj = { a: 1 };
console.log(obj); // 输出 { a: 1 }
obj = { b: 2 }; // 重新指向一个新的对象
console.log(obj); // 输出 { b: 2 }
obj = { a: 1 };
obj.a = 3; // 修改对象的属性,而不是重新赋值
console.log(obj); // 输出 { a: 3 }
// const:
// 不允许重新赋值,即不能改变变量的指针指向。
// 适用于不需要重新赋值的场景,尤其是对象和数组的引用,可以防止意外地将变量指向新的对象或数组
const obj = { a: 1 };
console.log(obj); // 输出 { a: 1 }
obj.a = 3; // 修改对象的属性,这是允许的
console.log(obj); // 输出 { a: 3 }
const arr = [1, 2, 3];
console.log(arr); // 输出 [1, 2, 3]
arr.push(4); // 修改数组的内容,这是允许的
console.log(arr); // 输出 [1, 2, 3, 4]
arr = [5, 6, 7]; // 报错:TypeError: Assignment to constant variable.
除此之外,还有
1.暂时性死区,使用let和const声明变量之前,该变量不可用,语法上暂时性死区,使用var声明变量不存在暂时性死区
2.变量声明时,var和let可不设置初始值,而const必须设置初始值
3.var声明的变量为全局变量,会将该变量添加为全局对象属性
阅读剩余
版权声明:
作者:Shican_FelixLiu
链接:https://www.shicanyyds.cn/index.php/2025/04/12/let%e3%80%81const%e3%80%81var%e5%8c%ba%e5%88%ab/
文章版权归作者所有,未经允许请勿转载。
THE END