我遇到了一些我正在运行的JavaScript的问题,并将其分解为以下代码。我对为什么_localVar
调用后为什么init()
变量不更改感到困惑。我发现,如果我在RevealingModule中引用this._localVar
,则结果与预期的一样。我对范围感到困惑。有人可以澄清为什么会发生这种情况。我以为如果不使用this
,那么下一个作用域将是模块,但我认为这没有发生。
var myRevealingModule = (function () {
var _localVar = "Default";
function init() {
console.log(_localVar);
_localVar = "Init";
}
function getTest() {
console.log(_localVar);
}
return {
init: init,
getTest: getTest,
localVar: _localVar
};
})();
myRevealingModule.getTest(); // "Default"
console.log(myRevealingModule.localVar); // "Default"
myRevealingModule.init(); // "Default"
myRevealingModule.getTest(); // "Init"
console.log(myRevealingModule.localVar); // "Default" * WHY *
最佳答案
myRevealingModule.localVar
不是对变量值的引用;它只是在创建字符串时复制了该字符串。
使用this.localVar
时,将在返回的对象中使用变量。因此,当您更改该标识符时,它也会用myRevealingModule.localVar
更新。