Как вернуть результат вложенной функции в функции стрелки javascript? - PullRequest
1 голос
/ 02 апреля 2019

Не могу понять, как вернуть результат вложенной функции в функцию стрелки.

Как выразить это (работает нормально):

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 ]

2 голосов
/ 02 апреля 2019

Вам нужно вызвать функцию, чтобы получить результаты, добавив, таким образом, скобки в конце.

const stopEating = (() => {
    let loadedStomach = false;
    return () => {
        if(!loadedStomach) {
            loadedStomach = true;
            console.log('Its enough eating!');
        }
    };
})();
0 голосов
/ 03 апреля 2019

В первом примере вы создали Выражение немедленного вызова функции (IIFE) .

Это функция JavaScript, которая запускается сразу после ее определения.Вот почему вы получаете внутреннюю функцию, которая печатает «Stop Eating».

Чтобы реализовать этот шаблон, вам просто нужно обернуть функцию стрелки:

const stopEating = (() => {
    let loadedStomach = false;
    return () => {
        if(!loadedStomach) {
            loadedStomach = true;
            console.log('Its enough eating!');
        }
    };
})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...