[英]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.