Явный и не явный возврат функции, что это значит и в чем разница?
Может кто-то по-простому объяснить, какая разница между явным и не явным возвратом функции и что это значит?
Может кто-то по-простому объяснить, какая разница между явным и не явным возвратом функции и что это значит?
Любая функция в JavaScript что-то возвращает. Если вы руками в функции написали ключевое слово return
- то это явный возврат. Будет явно возвращено указанное значение: return 'a'
вернет строку 'a'
, просто return;
вернет undefined
.
Если же ключевое слово return
отсутствует, то такой возврат называется неявным. Что именно будет возвращено, зависит от сигнатуры функции. В большинстве случаев это будет undefined
, но в случае с, например, асинхронными функциями, будет неявно возвращен Promise
, который разрешается в undefined
.
Можно сделать функцию, которая имеет как явное, так и неявное возвращаемое значение:
function foo () {
if (condition) return "bar";
}
Здесь мы явно возвращаем "bar"
если выполняется условие. В противном случае будет неявно возвращен undefined
.
Единственные 2 случая, когда функция не возвращает никакого значения, это в случаях:
yield
(но при этом рано или поздно, если не выполняется второй пункт, все равно будет что-то возвращено. Просто не сразу)Просто вопрос терминологии, не забивайте себе этим голову особо.
Неявный и явный возврат
У нас есть несколько способов написания наших стрелочных функций. Это потому, что стрелочные функции могут иметь ключевое слово «подразумеваемый возврат» или «явный возврат».
В обычных функциях, если вы хотите что-то вернуть, вам нужно использовать ключевое слово return. В стрелочных функциях тоже есть return. Когда вы используете return, это называется явным возвратом . Тем не менее, стрелка позволяет делать так называемый подразумеваемый возврат, когда return ключевое слово можно пропустить. Давайте посмотрим на несколько примеров:
Пример 1: нормальное функциональное выражение
const sayHi = function(name) {
return name;
}
Пример 2: стрелочная функция с явным возвратом
// Multi-line
const sayHi = (name) => {
return name;
}
// Single-line
const sayHi = (name) => { return name }
Пример 3: стрелочная функция с неявным возвратом
// Single-line
const sayHi = (name) => name
// Multi-line
const sayHi = (name) => (
name = 'Hi, ' + name,
name
)
Когда вы используете фигурные скобки {}
, вам нужно явно указать возврат. Однако, когда вы не используете фигурные скобки, return подразумевается, и вам этого делать не нужно.
Более подробно можно почитать тут https://ivan-shamaev.ru/javascript-notes-for-web-development/#i-7
что это значит
Ответ мне видится таким - это просто некое синтаксическое сокращение
в чем разница?
Визуальная - в наличии или отсутствии return
.
В использовании никакой разницы нет. Функция как функция.