Оператор return
относится к операторам «внезапного завершения» функции. Это значит, что кроме return
существуют другие операторы, которые могут внезапно завершить выполнение функции.
Список операторов «внезапного завершения» по стандарту ECMAScript:
- break
- continue
- return
- throw
Пример функции, которая завершается из-за оператора throw
перед оператором return
.
function f_throw(){ throw(10); return 20; };
Скриншот вызова данной функции:
Оператор throw
говорит нам о выбрасывании исключения и принудительной остановки выполнения функции в месте исключения. Простыми словами можно сказать, что остановка выполнения функции случилась из-за какой-то ошибки. Это значит, что все последующие команды в теле функции не будут выполнены.
В чём отличие throw от return в JavaScript?
Оператор return
постарается вернуть из функции какое-то значение для дальнейшей работы. Функция завершится внезапно, но её завершение может быть логически обосновано и вся остальная часть программы продолжит своё выполнение. Программа будет работать дальше.
Оператор throw
выбросит исключение, которое приведёт к остановке выполнения всей программы скриптового файла, если мы никак не перехватим это исключение и не обработаем его корректным образом. Если мы хотим писать устойчивые программы, то мы должны обязательно использовать операторы перехвата исключений, например оператор try catch finally
.
Информационные ссылки
Стандарт ECMAScript — Раздел «6.2.4 The Completion Record Specification Type» — https://tc39.es/ecma262/multipage/ecmascript-data-types-and-values.html#sec-completion-record-specification-type