Явный:
через ключевое слово
return
.
Например:
function getTrue() {
return true // явный возврат true
}
getTrue() // true
const getFalse = () => {
return false // явный возврат false из стрелочной функции
}
getFalse() // false
То есть Вы с помощью зарезервированного слова говорите "в слух" - вот тут я возвращаю такое то значение.
Неявный:
- Для обычных функций это когда функция не содержит слова return и возвращает undefined по умолчанию.
- Для стрелочных функций, когда функция записана в одну строку и не содержит слова return, но возвращает значение операции, описанной после
=>
. Если стрелочная функция с описанным в фигурных скобках телом функции, то так же как и для обычной функции. Если нет return, то undefined.
Например:
function getUndefined() {
// какой то код, но нет return.
console.log('Я тут что-то делаю, не обращайте внимания.')
}
getUndefined() // undefined
const getArrowValue = () => 'неявный'
getArrowValue() // "неявный"
То есть Вы нигде не говорите напрямую что возвращаете определённое значение с помощью зарезервированного ключевого слова.
И для чего это
Если честно даже не знаю что на это ответить. Чтоб было. Ну вот есть такие вот варианты и всё. Ну неявный в стрелочной чтоб было короче разве что.
Ну ещё немного подумав - неявный возврат из функции может быть только один - в самом конце функции. Явных возвратов в функции может быть несколько. Например если по условию нужно вернуть разные значения. При этом наличие явного возврата в функции не гарантирует что он сработает, опять же, если он находится под условием.
Например:
function conditionalReturn(value) {
if (value === 1) {
return 'one'
}
if (value === 2) {
return 'two'
}
}
conditionalReturn(1) // явно вернёт one
conditionalReturn(2) // явно вернёт two
conditionalReturn(3) // не явно вернёт undefined
UPD:
Так же асинхронная функция, объявленная через ключевое слово
async
, в неявном виде всегда возвращает
Promise
, даже если используется ключевое слово return - то значение после return будет обёрнуто в промис.