版本1:
function myF() {
var executed = false;
return function() {
if (!executed) {
executed = true;
document.getElementById("demo").innerHTML = "Ab"
}
};
};
myF();
版本2:
var myF = (function() {
var executed = false;
return function() {
if (!executed) {
executed = true;
document.getElementById("demo").innerHTML = "Ab"
}
};
})();
myF();
为什么v2有效,为什么v1不有效?调用它们时,两者之间的主要区别是什么?
最佳答案
版本2返回IIFE的结果,版本1相同但不调用表达式。您可以像myF()()
那样调用它,
function myF() {
var executed = false;
return function() {
if (!executed) {
executed = true;
document.getElementById("demo").innerHTML = "Ab"
}
};
};
myF()();
<div id="demo">
</div>