#javascript #function #invoke
#javascript #функция #вызвать
Вопрос:
Почему я могу вызвать эту функцию без инструкции return в ней:
function addSmt1( num1, num2){
console.log(num1 num2)
}
addSmt1(2,3)
вот так?
Но не могу сделать это здесь:
function addSmt( num1, num2){
return num1 num2;
}
let x = addSmt(2,4)
console.log(x)
Почему я должен помещать вызов функции функции с возвратом внутри переменной, чтобы вызвать ее?
Кстати, я слишком сильно подчеркиваю такие «незначительные» детали?
Комментарии:
1. console.log() — это просто оператор вывода для справки пользователя, поэтому он не возвращает никаких value….so если вы хотите просто отобразить сумму, вы можете использовать метод 1, но вместо этого, если вы хотите присвоить результат переменной, чтобы использовать его в каком-либо другом вычислении, вам нужночтобы перейти ко второму методу
Ответ №1:
Вы можете вызвать функцию с возвратом внутри, не помещая вызов в переменную. Но если вы этого не сделаете, вы не сможете получить доступ к данным, возвращаемым функцией
Ответ №2:
Операторы возврата
Когда вы помещаете return
оператор в функцию, вы сообщаете интерпретатору, что вы можете присвоить переменной возвращаемое значение функции. Это означает, что при присвоении переменной весь код внутри функции выполняется до присвоения возвращаемого значения. Допустим, у вас была такая функция:
function multiplySums(a, b, c, d) {
alert('Running!')
return (a b)*(c d);
}
Когда вы присваиваете переменной say product
to multiplySums(5, 4, 6, 7)
, вы, по сути, приказываете интерпретатору запустить весь код внутри multiplySums
, а затем вернуть значение, которое в данном случае равно 117
.
Теперь, что, если multiplySums был изменен таким образом?
function multiplySums(a, b, c, d) {
alert('Running!')
alert((a b)*(c d));
}
Помните, что функции, которые не возвращаются, называются voids . Они неявно возвращают значение, и это undefined
(похоже на Python, где возвращаются пустоты None
.) Итак, здесь вы бы присвоили переменной значение undefined .
Что, если вы просто вызвали функцию без назначения? Давайте вызовем multiplySumsReturn
функцию, которая возвращает, и multiplySumsVoid
ту, которая не возвращает:
multiplySumsVoid(1, 2, 3, 4)
предупреждает о вычислении.multiplySumsReturn(1, 2, 3, 4)
предупреждаетRunning!
, но не будет предупреждать о вычислении, если вы не выполняете это непосредственно в консоли, и в этом случае он неявно регистрирует возвращаемое значение на консоли.let product = multiplySumsVoid(1, 2, 3, 4)
в основном объявляет переменную без присваивания, видя, как возвращается voidundefined
. Да, вы предупреждаете вычисление, но вы не можете выполнять какие-либо операции с этой переменной.let product = multiplySumsReturn(1, 2, 3, 4)
присвоит переменной возвращаемое значение, что и является причиной существованияreturn
ключевого слова! Чтобы иметь возможность повторно использовать вычисления и значения.
Надеюсь, это имеет смысл, и извините за длинный ответ.