2013-03-10 3 views
1

Выполняет ли оператор вызова метода/функции его возвращаемое значение, аналогичное тому, как имя переменной содержит значение?Как сохраняются значения возврата?

Например:

function Jump(height) { 
    return height * 2; 
} 
Jump(3);  //Is the call statement 'Jump(3)' equal the return value of 6 similar to 

var x = 3; //how the variable 'x' is equal to the value of 3? 

Edit: Я дал неверное впечатление, называя переменной и функции с одинаковыми именами. Я просто использовал переменную в качестве сравнения при понимании того, как сохраняются возвращаемые значения. В следующий раз я буду говорить/структурировать свой вопрос.

+4

Я думаю, что вы ищете 'var myJump = Jump (3); // myJump теперь 6' – corsiKa

+0

@corsiKa Я думаю, что это * ответ * Необходимый OP – user113215

+0

Возвращаемое значение is'nt хранится где угодно, если вы фактически не назначили его переменной, как в приведенном выше комментарии. – adeneo

ответ

0

Немного о выражениях

После Вашего редактирования, кажется, вы спрашиваете о expressions ,

expression - это в основном фрагмент, который имеет value. В вашем примере оба выражения: Jump(3) и var x = 3 - это выражения, так как оба имеют значение. Другими словами, Jump(3) является выражением со значением 6 и (x=3) фактически является выражением, которое оценивается как 3.

Единственное различие между ними состоит в том, что первое выражение также присваивает значение assignment operator (то есть =), тогда как второе выражение является «просто» значением. В этом случае в вашем примере переменная x также является выражением, которое вычисляется как 3.

Дополнительной информации по этому вопросу см MDN - Expressions and operators in Javascript

Больше к точке

Это означает, что при передаче аргумента в функцию by-value, вы, по сути передавая значение выражения. Итак, в вашем примере Jump(x), Jump(3), Jump((x=3)) и Jump(Jump(1.5)) будут оцениваться как 6.

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

+0

Это очищает его для меня. Спасибо. – 2013-03-10 21:24:30

6

функции и переменные имеют одно и то же пространство имен. Вы определили функцию Jump и затем вызвали ее (но на самом деле не назначили результаты функции (что было возвращено)), поэтому она вернула 6, но затем вы фактически ее не хранили. Тогда вы перезаписали вашу функцию, пересматривая его в качестве переменной с тем же именем, и просто присваивается ему значение 3

+0

Если я не сохраняю вручную возвращаемое значение функции внутри переменной, как возвращаемое значение используется в качестве аргумента для другой функции? т.е. выполнить (скачок (3)); Является ли возвращаемое значение сохраненным «за кулисами»? – 2013-03-10 21:16:27

+0

все в порядке, потому что вы передаете значение 'run()'.Затем значение будет сохранено в первом запуске arg внутри, например: 'function run (arg1) {alert ('arg1); } 'в этом примере,' arg1' теперь имеет значение и хранится там (но только во время выполнения и области действия 'run'). –

+0

Таким образом, вызов функции аналогичен математическому вычислению. т. е. 5 * 4 = 20, где 20 - его возвращаемое значение. Если бы мы хотели умножить другое число на этот продукт, нам не пришлось бы писать: 5 * 4 = 20, 20 * 2 = 40. Мы могли бы просто написать: 5 * 4 * 2 = 40. Выражение (5 * 4) неявно равно 20, поэтому мы можем использовать все выражение вместо ответа. Это правильные функции сравнения и возвращаемые значения? – 2013-03-11 00:23:53

Смежные вопросы