任何人都可以向我解释为什么下面的第一个代码不起作用,但第二个代码确实有效?
不工作↓↓↓:
let call = () => {
let secret = "HELLO NOOBS";
let reveal = () => {
console.log(secret);
}
return reveal;
}
call();
正在工作↓↓↓:
let call = () => {
let secret = "HELLO NOOBS";
let reveal = () => {
console.log(secret);
}
return reveal;
}
let unveil = call();
unveil();
答案 0 :(得分:4)
call
返回一个函数。在您的第一个示例中,您只需调用call
,您就不会调用它返回的函数。在你的第二个例子中,你正在调用返回的函数,这自然是一个很大的区别。
您也可以直接调用返回的函数而不使用变量:
call()();
第一次()
来电call
;第二个()
调用函数call()
返回。
直播示例:
let call = () => {
let secret = "HELLO NOOBS";
let reveal = () => {
console.log(secret);
}
return reveal;
};
call()();
答案 1 :(得分:0)
您刚刚使用call()
返回了该函数并执行它,您应该使用call()()
。像这样:
let call = () => {
let secret = "HELLO NOOBS";
let reveal = () => {
console.log(secret);
}
return reveal;
}
call()();
请注意,当您使用=>没有括号的函数它们隐含地返回给定的任何值。