谁能向我解释为什么下面的第一个代码不起作用,但第二个代码却起作用?
不工作 ↓↓↓ :
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();
最佳答案
call
返回一个函数。在第一个示例中,您只需调用 call
,而无需调用它返回的函数。在第二个示例中,您正在调用返回的函数,因此自然这是一个很大的差异。
您也可以不使用变量直接调用返回的函数:
call()();
第一个()
调用call
;第二个 ()
调用函数 call()
返回。
实例:
let call = () => {
let secret = "HELLO NOOBS";
let reveal = () => {
console.log(secret);
}
return reveal;
};
call()();
关于javascript - ES6闭包只有在我将其分配给变量后才能调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48841881/