javascript - 这两个函数声明有什么区别?

标签 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 无效?当调用它们时,这两者之间的主要区别是什么?

最佳答案

版本 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/

相关文章:

javascript - Javascript 中的字符串和数字比较

javascript - 动态添加的 CSS 不适用于 HTML 元素

javascript - jQuery附加不包含子元素的div

向上滚动或向下滚动时的 JavaScript 事件

javascript - 单击菜单中的元素隐藏下拉菜单

javascript - Node.js 中的异步代码和循环?

javascript - Ember 助手可以用作实用程序吗?

Javascript:波浪号显示为连字符

javascript - vimeo 视频达到特定秒数时如何显示 div?

javascript - Axios ReactJs Laravel : How to retrieve the multiple request Api