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?

编辑:我通过将变量和函数命名为相同的名称而给人留下了错误的印象。我纯粹是使用该变量作为比较来了解如何保存返回值。下次我会更好地措辞/组织我的问题。

4

2 回答 2

6

函数和变量共享同一个命名空间。您定义了函数Jump然后调用它(但实际上并没有分配函数的结果(返回的内容)),所以它返回 6 但您实际上并没有将它存储在任何地方。然后,您通过将函数重新定义为具有相同名称的变量来覆盖您的函数,并将其赋值为 3

于 2013-03-10T20:20:18.070 回答
0

一点关于表达式

在您进行编辑之后,您似乎在询问expressions.

Anexpression基本上是一个具有value. 在您的示例中,Jump(3)var x = 3都是表达式,因为两者都有一个值。换句话说,Jump(3)是一个带有值的表达式6(x=3)实际上是一个计算结果为 的表达式3

两者之间的唯一区别是第一个表达式也用assignment operator(ie =) 赋值,而第二个表达式“只是”一个值。就此而言,在您的示例中,变量x也是一个计算结果为的表达式3

有关此主题的更多信息,请参阅MDN - Javascript 中的表达式和运算符

更重要的是

这意味着当您将参数传递给函数by-value时,您实际上是在传递表达式的值。因此,在您的示例中Jump(x)Jump(3),Jump((x=3))Jump(Jump(1.5))都将评估为6

自然地,将常用操作的值存储在一个将作为表达式快速计算的变量中,比每次计算表达式时都进行计算的成本要低得多。

于 2013-03-10T21:11:43.037 回答