繁体   English   中英

为什么 function 中的 function 不起作用?

[英]Why does a function inside a function doesn't work?

下面代码中的 output 是Message 1! 只要

function alertThenReturn() {
  alert('Message 1!');

  return function () {
    alert('Message 2!');
  };
}

下面代码的 output (在将上面相同的 function 保存在变量中之后)是Messege1! Messege2! )

function alertThenReturn() {
  alert('Message 1!');

  return function () {
    alert('Message 2!');
  };
}

const innerFunction = alertThenReturn();

变量innerFuciton中 function 的预期 output 与原始 function alertFunction alertFunction 的alertFunction仅通过将其保存在另一个变量中如何更改

我知道alertThenReturn不返回第二个警报,但是...为什么当 function 存储在一个变量(在本例中为innerFunction )时返回第二个警报,其中原始 function 和变量应该相同并且output 应该是一样的

编辑:很多人说,在添加最后一行后,代码不会返回两个警报,但实际上会返回两个警报。

alertThenReturn()返回 function 但您没有调用它。 如果你调用innerFunction那么你会得到第二个。

 function alertThenReturn() { alert('Message 1;'); return function () { alert('Message 2;'); }; } const innerFunction = alertThenReturn()();

对于给定的alertThenReturn实现,仅const innerFunction = alertThenReturn()不可能发出两次警报。

它会提醒一次:

 function alertThenReturn() { alert('Message 1;'); return function () { alert('Message 2;'); }; } const innerFunction = alertThenReturn()

要警告两次,您需要调用alertThenReturn的结果(在本例中为innerFunction ):

 function alertThenReturn() { alert('Message 1;'); return function () { alert('Message 2;'); }; } const innerFunction = alertThenReturn() innerFunction()

或者,立即调用alertThenReturn()的结果以获得相同的效果:

 function alertThenReturn() { alert('Message 1;'); return function () { alert('Message 2;'); }; } alertThenReturn()()

仅仅定义方法本身不应该发出警报,但是当你在行中调用它时:

const innerFunction = alertThenReturn();

发生的事情是alertThenReturn发送一条警报消息,然后返回您的内部 function。 所以当你跑

innerFunction()

这将为您提供消息 2 的 output。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM