0

在 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 构造函数中的局部变量?

4

1 回答 1

3

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

这意味着要解决它们必须在同一个代码块中,或者在封闭的代码块中。

仅当 的定义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);
})();
于 2013-05-30T14:21:44.177 回答