gpt4 book ai didi

javascript - 为什么初始化多个变量会导致范围泄漏?

转载 作者:数据小太阳 更新时间:2023-10-29 05:15:10 26 4
gpt4 key购买 nike

我指的是 JavaScript var hoisting 的文档,在一个部分我找到了 Initialization of several variablesExample如下所示。

var x = 0;

function f(){
var x = y = 1;
}
f();

console.log(x, y); // outputs 0, 1
// x is the global one as expected
// y leaked outside of the function, though!

我想得到的异常是 Uncaught Reference Error: y is not defined。但由于范围泄漏并没有发生,它正在显示 0,1

我能详细知道为什么会这样吗?最后有任何与性能相关的问题吗?

最佳答案

你没有声明y

var x = y = 1; 

相当于

y = 1;
var x = y; // actually, the right part is precisely the result of the assignement

undeclared variable is a global variable (除非你在 strict mode 中,否则这是一个错误)。

你提到的例子是不同的,有一个逗号is part of the multiple declaration syntax .

你可以修复你的代码

var y=1, x=y;

关于javascript - 为什么初始化多个变量会导致范围泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31428785/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com