[英]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.