这两个函数声明之间有什么区别?

时间:2018-03-07 22:28:45

标签: javascript

版本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没有?什么是这两者之间的主要区别,当它们被称为?

1 个答案:

答案 0 :(得分:3)

版本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>
&#13;
&#13;
&#13;