javascript - ES6闭包只有在我将其分配给变量后才能调用

标签 javascript ecmascript-6 closures

谁能向我解释为什么下面的第一个代码不起作用,但第二个代码却起作用?

不工作 ↓↓↓ :

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/

相关文章:

javascript - Scrapy 并提交一个 javascript 表单

javascript - Jquery UI 自动完成列表不刷新

javascript - 一个令人困惑的 JavaScript ES6 字符串模板语法示例

javascript - 如何在我的无节点js环境中设置babel-standalone?

closures - 如何将可变引用捕获到从闭包返回的迭代器中包含的移动闭包

列表中的 JavaScript

javascript - 如何使用 ES6 在 AngularJs 中进行依赖注入(inject)?

javascript - JavaScript 中的 Ruby 样式 block ?

javascript - 如果 goog.require 是基类导入的,那么它是否需要在子类中重复

javascript - x 轴上的 float 阈值