版本 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>
关于javascript - 这两个函数声明有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49162266/