如何在JavaScript箭头函数中返回嵌套函数的结果?

时间:2019-04-02 20:47:30

标签: javascript ecmascript-6

无法弄清楚如何在箭头函数中返回嵌套函数的结果。

如何表达这一点(效果很好):

var stopEating = (function() {
    var loadedStomach = false;
    return function() {
        if(!loadedStomach){
            loadedStomach = true;
            console.log('Stop eating');
        }};
})();

作为箭头功能(无法正常工作):

const stopEating = () => {
    let loadedStomach = false;
    return () => {
        if(!loadedStomach) {
            loadedStomach = true;
            console.log('Its enough eating!');
        }};
};

2 个答案:

答案 0 :(得分:2)

您需要调用该函数以获取结果,因此在末尾添加括号。

const stopEating = (() => {
    let loadedStomach = false;
    return () => {
        if(!loadedStomach) {
            loadedStomach = true;
            console.log('Its enough eating!');
        }
    };
})();

答案 1 :(得分:-1)

在第一个示例中,您创建了Immediately Invoked Function Expression (IIFE)

这是一个JavaScript函数,它在定义后立即运行。这就是为什么您会收到内部功能的原因,该功能会显示“停止进食”。

要实现此模式,您只需包装箭头功能:

const stopEating = (() => {
    let loadedStomach = false;
    return () => {
        if(!loadedStomach) {
            loadedStomach = true;
            console.log('Its enough eating!');
        }
    };
})();