Присвоение результатов функции переменным в JavaScript - PullRequest
5 голосов
/ 03 апреля 2020

Я изучаю JavaScript и хочу понять это поведение.

Я изучал следующий код:

function multiNum(x,y){
  return x*y
}
var num = multiNum(3,4);
document.write(num)

Я пытался напечатать это сам, и это то, что я придумал:

function multiNum(x,y){
  return x*y
}
document.write(multiNum(3,4))

Я думал, что мог бы поместить multiNum(3,4) в document.write() вместо создания другой переменной.

Итак, это просто правило, которое я имею создать другую переменную и поместить новую в document.write()?

Ответы [ 4 ]

1 голос
/ 03 апреля 2020

Это интересный вопрос, и для полного понимания было бы полезно взглянуть на javascript выражений . По существу, присваивание в javascript выглядит как

variable_name = expression

, когда вы создаете, что variable expression оценивается

//so this
number = 3 * 5
//is the same as
number = 15

Functions можно вызвать с помощью выражения , литерал (например, string или int) или имя переменной

// '|' means 'or'
function(expression | literal | variable)

, если передать выражение в функцию function(expression), expression сначала оценивается, а затем передается в функция.

// so
function(3*5)
//is the same as
function(15)

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

Давайте посмотрим на этот пример

function increment(number){
 return number + 1
}
n = 1
document.write(increment(n))

Первый document.write вызывается с параметр increment(n) и n = 1

//so 
increment(n) = increment(1) = 2
//following me? now we can see that
document.write(increment(n)) 
//is the same as
document.write(2)
//!!

Надеюсь, это поможет!

edit:

, чтобы вернуть его к вашему примеру

function multiNum(x,y){
  return x*y
}
var num = multiNum(3,4) // num = 12
//so
document.write(num)
//is the same as
document.write(12)

1 голос
/ 03 апреля 2020

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

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

1 голос
/ 03 апреля 2020

Оба ваших примера верны и дадут одинаковый результат. Это просто вопрос стиля.

Если вы хотите, чтобы ваш код легче читался, лучше отделить его, как в первом примере.

Если вы хотите, чтобы ваш код был меньше по размеру. Тогда второй пример самый лучший.

Разделение вещей - это лучшая практика.

0 голосов
/ 03 апреля 2020

То, что вы сделали со вторым решением, довольно эффективно.

Как правило, первый подход полезен, только если вы хотите, чтобы вычисленное значение multiNum(3,4) использовалось позже в вашем скрипте. И поэтому вы должны хранить его в отдельной переменной, чтобы вам не приходилось снова вычислять значение.

Если вы уверены, что оно вам больше не понадобится, то, что вы сделали позже как document.write(multiNum(3,4)) это лучший способ go.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...