在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构造函数内的局部变量?
答案 0 :(得分: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);
})();