Как я могу использовать возврат в JavaScript - PullRequest
7 голосов
/ 07 декабря 2010

Как я могу использовать return в javascript

function hello1() {

    function hello2() {

        if (condition) {
            return; // How can I exit from hello1 function not hello2 ?
        }

    }

}

Ответы [ 3 ]

15 голосов
/ 07 декабря 2010

Вы не можете.Это не так return работает.Он выходит только из текущей функции.

Возможность возврата из функции дальше вверх по стеку вызовов нарушит инкапсуляцию , предлагаемую функцией (т. Е. Не нужно знать, гдеон вызывается из, и он должен решать, что делать в случае сбоя функции).Частью функции является то, что вызывающей стороне не нужно знать, как реализована функция.

То, что вы, вероятно, хотите, выглядит примерно так:

function hello1() {
    function hello2() {
        if (condition) {
            return false;
        }
        return true;
    }

    if (!hello2()) {
        return;
    }
}
2 голосов
/ 07 декабря 2010

подпрыгивать в стеке, наверное, плохая идея.Вы могли бы сделать это с исключением.мы контролируем поток выполнения таким образом в одном месте на работе, потому что это простой обходной путь для некоторого плохо разработанного кода.

2 голосов
/ 07 декабря 2010

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

Если ваша внешняя функция полагается на свою внутреннюю функцию для некоторой логики, просто используйте возвращаемое значение, чтобы продолжить соответственно.

...