gpt4 book ai didi

javascript - 构造函数内的变量范围

转载 作者:行者123 更新时间:2023-11-28 20:28:45 25 4
gpt4 key购买 nike

在 JavaScript 中,函数始终可以访问全局变量。我正在使用一个类,它引用全局变量。这是一个类似的类:

function Test(){
this.abc = abc;
}

如果我设置全局 abc 然后调用它,它就可以工作。

var abc = 123,
testA = new Test;

console.log(testA.abc); // 123

但是如果我不希望 abc 成为全局的怎么办?我将代码包装在函数调用中,但收到错误消息 abc is not Defined

(function(){
var abc = 123,
testA = new Test; // ERROR: abc is not defined

console.log(testA.abc);
})();

如何在不将变量添加到全局作用域的情况下读取 JavaScript 构造函数内的局部变量?

最佳答案

问题在于局部变量具有词法范围。

这意味着要解析它们必须位于同一代码块内,或者位于封闭代码块中。

只有当 Test 的定义也在 IIFE 中时,您的代码才有效:

(function(){
var abc = 123,
testA = new Test; // ERROR: abc is undefined

function Test() { // this will be hoisted
this.abc = abc;
}

console.log(testA.abc);
})();

关于javascript - 构造函数内的变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16838674/

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