以下代码中的输出仅为Message 1!
function alertThenReturn() {
alert('Message 1!');
return function () {
alert('Message 2!');
};
}
以下代码的输出(在变量中保存与上面相同的函数之后)为Messege1!
Messege2!
)
function alertThenReturn() {
alert('Message 1!');
return function () {
alert('Message 2!');
};
}
const innerFunction = alertThenReturn();
innerFuciton
中该函数的预期输出与原始函数alertFunction
相同。
仅通过将alertFunction
的输出保存到另一个变量中即可我知道alertThenReturn
不会返回第二个警报,但是...当函数存储在变量中时为什么返回第二个警报(在本示例中为innerFunction
)原始函数和变量应相同,输出应相同
编辑:很多人说添加最后一行后,代码将不会同时返回两个警报,但是实际上会返回两个警报。
答案 0 :(得分:0)
alertThenReturn()
返回函数,但是您没有调用它。如果您致电innerFunction
,您将获得第二个。
function alertThenReturn() {
alert('Message 1!');
return function () {
alert('Message 2!');
};
}
const innerFunction = alertThenReturn()();
答案 1 :(得分:0)
在给定的const innerFunction = alertThenReturn()
实现下,仅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()()
答案 2 :(得分:0)
仅定义方法本身不应发出警报,而应在行中调用它:
const innerFunction = alertThenReturn();
发生的事情是alertThenReturn
发送了一条警告消息,然后返回了您的内部函数。因此,当您运行
innerFunction()
这将为您提供消息2的输出。