在 IIFE 中访问变量
Accessing variables within IIFE
我正在尝试学习模块模式,我在使用 IIFE 和访问内部变量时遇到过这种情况。
var foo = (function () {
var bar = false;
function switchbar () {
if(bar){ bar = false} else { bar = true } ;
};
function show {
switchbar();
console.log(bar)
};
function noshow {
switchbar();
console.log(bar)
};
return {
showTheBar: show,
hideTheBar: noshow,
whatIsBar: bar
}
}());
foo.showTheBar() //true
foo.whatIsBar //false --> should be true
为什么最后一个输出中的 bar 不为真?任何见解都会有很大帮助。提前致谢。
执行foo IIFE时,bar
的值被赋值给变量whatIsBar
。这个新变量不再与原来bar
的值相关。
所以无论bar
改成什么,都不会影响whatIsBar
。这是一个完全不同的变量。
我正在尝试学习模块模式,我在使用 IIFE 和访问内部变量时遇到过这种情况。
var foo = (function () {
var bar = false;
function switchbar () {
if(bar){ bar = false} else { bar = true } ;
};
function show {
switchbar();
console.log(bar)
};
function noshow {
switchbar();
console.log(bar)
};
return {
showTheBar: show,
hideTheBar: noshow,
whatIsBar: bar
}
}());
foo.showTheBar() //true
foo.whatIsBar //false --> should be true
为什么最后一个输出中的 bar 不为真?任何见解都会有很大帮助。提前致谢。
执行foo IIFE时,bar
的值被赋值给变量whatIsBar
。这个新变量不再与原来bar
的值相关。
所以无论bar
改成什么,都不会影响whatIsBar
。这是一个完全不同的变量。