繁体   English   中英

构造函数内部的变量范围

[英]Variable scope inside constructor

在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);
})();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM