Javascript 返回值是如何保存的?

Javascript 返回值是如何保存的?,javascript,function,return,Javascript,Function,Return,方法/函数的call语句是否保存其返回值,类似于变量名保存值的方式 例如: 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? 编辑:我把变量和函

方法/函数的call语句是否保存其返回值,类似于变量名保存值的方式

例如:

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?


编辑:我把变量和函数命名为同一个名称,给人一种错误的印象。在理解返回值是如何保存的过程中,我纯粹是将变量用作比较。下次我将更好地组织我的问题。

函数和变量共享同一名称空间。您定义了函数
Jump
,然后调用它(但实际上没有分配函数的结果(返回的内容)),因此它返回6,但实际上没有将其存储在任何位置。然后,通过将函数重新定义为具有相同名称的变量来重写函数,并将3个函数和变量的值赋给它,这些函数和变量共享相同的名称空间。您定义了函数
Jump
,然后调用它(但实际上没有分配函数的结果(返回的内容)),因此它返回6,但实际上没有将其存储在任何位置。然后,通过将函数重新定义为具有相同名称的变量来重写函数,并将其赋值为3,这与表达式有关

编辑之后,您似乎在询问有关
表达式的问题

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

两者之间的唯一区别在于,第一个表达式还使用
赋值运算符
(即
=
)赋值,而第二个表达式“只是”一个值。因此,在您的示例中,变量
x
也是一个计算结果为
3
的表达式

有关此主题的更多信息,请参阅

更切题

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


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

关于表达式的一点

编辑之后,您似乎在询问有关
表达式的问题

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

两者之间的唯一区别在于,第一个表达式还使用
赋值运算符
(即
=
)赋值,而第二个表达式“只是”一个值。因此,在您的示例中,变量
x
也是一个计算结果为
3
的表达式

有关此主题的更多信息,请参阅

更切题

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


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

我想您正在寻找
var myJump=Jump(3);//myJump现在是6
@corsiKa我想这就是所需的答案返回值不会存储在任何地方,除非您实际将其分配给变量,如上面的注释所示。让变量和函数同名可能不是一个好主意;)我想您正在寻找
var myJump=Jump(3);//myJump现在是6
@corsiKa我想这就是所需的答案返回值不会存储在任何地方,除非您实际将其分配给变量,如上面的注释所示。让变量和函数同名可能不是一个好主意;)如果我不将函数的返回值手动存储在变量中,那么返回值如何用作另一个函数的参数?i、 e.跑(跳(3));返回值是否存储在“幕后”?这样做可以,因为您正在将值传递给
run()
。然后,该值将存储在运行中的第一个arg中,例如:
function run(arg1){alert('arg1);}
在该示例中,
arg1
现在将该值及其存储在那里(但仅在
run
函数的执行和范围内)。因此调用函数类似于数学计算。i、 e.5*4=20,其中20为其返回值。如果我们想把另一个数乘以这个乘积,我们就不必写:5*4=20,20*2=40。我们可以简单地写:5*4*2=40。表达式(5*4)隐式地等于20,因此我们可以使用整个表达式来代替答案。这是一个正确的比较函数和返回值吗?或多或少,是的。但一般来说,函数不必返回任何特殊的值(如果不指定返回值,它将不返回任何值(null)。你可以让一个函数执行一些任意的操作。本质上,函数只是一种方便的方式,可以在一些代码周围包装一个标签,这样你就可以在多个地方反复执行一些代码,而不是在我不手动存储函数返回的情况下一遍又一遍地键入代码