1

メソッド/関数の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?

編集:変数と関数に同じ名前を付けることで間違った印象を与えました。戻り値がどのように保存されるかを理解するための比較として、純粋に変数を使用していました。次回は私の質問をよりよく表現/構成します。

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です。

2つの違いは、最初の式もassignment operator(ie =)で値を割り当てるのに対し、2番目の式は「単なる」値であるということだけです。さらに言えば、あなたの例では、変数xはに評価される式でもあります3

このテーマの詳細については、MDN-Javascriptの式と演算子を参照してください。

もっと要点

これは、引数をで関数に渡す場合、基本的に式の値を渡すことを意味します。したがって、あなたの例では、、、Jump(x)およびJump(3)すべてJump((x=3))Jump(Jump(1.5))に評価され6ます。

当然、式が評価されるたびに計算が行われるよりも、式としてすばやく評価される変数に一般的な演算の値を格納する方がはるかにコストがかかりません。

于 2013-03-10T21:11:43.037 に答える