【问题标题】:function expression versus directly calling函数表达式与直接调用
【发布时间】:2016-01-04 21:58:32
【问题描述】:

为什么直接调用函数与将其作为函数表达式然后调用变量会产生不同的结果?

function makeFunc() {
  var name = "Mozilla";
  function displayName() {
    alert(name);
  }
  return displayName;
}

console.log(makeFunc());
makeFunc(); //no alert

var myFunc = makeFunc();
console.log(myFunc);
myFunc(); //Yes alert

【问题讨论】:

  • 因为第一个从不调用displayName,而第二个调用(间接)。
  • 这是一个闭包。如果您不存储作为函数的返回值并且不调用返回的函数,则代码没有意义。
  • @DarkFalcon 你能帮我解释一下'间接调用displayName函数过程'吗?这就是我的答案!
  • @Vohuman 谢谢你的解释!

标签: javascript function closures


【解决方案1】:

你必须调用函数的返回

function makeFunc() {
    var name = "Mozilla";
    function displayName() {
        alert(name);
    }
    return displayName;
}
makeFunc()(); // alert!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 2018-06-13
    • 2012-12-28
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 2016-11-05
    相关资源
    最近更新 更多