JavaScript 中 let 和 var 的区别
在 JavaScript 中,您可以使用 let
或者 var
声明可变变量。 一个变量与 let
关键字只会在声明的块内使用,不会影响嵌套块中使用的变量,例如 if
声明和 for
循环,或块外。 下面是一个例子:
let x = 1;
if (x === 1) {
let x = 2;
if (x === 2) {
let x = 3;
x; // 3
}
x; // 2
}
x; // 1
另一个选择是 var
,var
关键字的范围可以是 function-scoped 或 global-scoped 。 var
函数中声明的变量不会渗入其他函数,但会渗入嵌套块,例如 if
声明和 for
循环。
var x = 1;
if (x === 1) {
var x = 2;
if (x === 2) {
var x = 3;
x; // 3
}
x; // 3
}
x; // 3
Hoisting
之间的另一个区别 let
和 var
你可以使用一个声明的变量吗 var
在实际之前 var
陈述。 这是因为 JavaScript 提升 了所有 var
函数调用开始的声明。 这是一个常见的混淆来源,这也是我们推荐使用的原因之一 let
代替 var
。
function test() {
console.log(x); // undefined
console.log(y); // "ReferenceError: Cannot access 'y' before initialization"
var x = 3;
let y = 3;
}
test();
let
声明也被提升了,但是你得到了 ReferenceError
如果您尝试访问声明为 let
在实际声明语句运行之前。 这就是为什么错误消息是 无法在初始化之前访问 y,而不是“y 未定义”,如果你没有声明,JavaScript 就会抛出这个错误消息 y
根本。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论