0

今日、いくつかの変数をいじっていて、より良い感触を得ようとしましたが、私に特有のように見えるものに出くわしました。JavaScript での例を次に示します。

var foo = "Sethen";
var bar = foo;
var bar = "Sethen is " + bar;
console.log(bar);

Sethen is Sethen私が期待するものではない出力が得られます。私が見ているのは、への割り当てと、値を上書きするbar別の割り当てです。代わりに見たいと思います。これは PHP でも発生します。ここで私が見逃している基本的なものはありますか?barbarSethen is Sethen is

Sethen is Sethenが 2 回割り当てられたときに、これが機能するのはなぜbarですか??

4

5 に答える 5

3

bar右辺の式を計算した後に割り当てられます。

多くの言語のほとんどの代入演算子は、演算の順序に関しては非常に低い優先順位を持っています。

Mozillaには、 JavaScriptの演算子の優先順位に関するドキュメント全体があります。

于 2013-02-16T19:50:09.923 に答える
1

「Sethenis」という表現は+バーです。割り当ての前に実行されます

于 2013-02-16T19:50:10.707 に答える
0

演算子の優先順位とは別に、演算子の結合性を理解する必要があります - http://en.wikipedia.org/wiki/Operator_associativity

于 2013-02-16T19:55:59.160 に答える
0

任意の言語で式を評価する場合、コンパイラ(jsのインタープリター)は最初に式の計算部分(右側)を評価し、次に評価された値を変数に保存(割り当て)します。この場合、最初に変数 bar に代入 し、次の行に、コンパイラが最初に評価する式があり、どのバーが現在 (代入前) に保持されているかを評価します。その後、コンパイラは計算された値を変数に代入します。 .すべての手順の後、結果を印刷すると、 が表示されます。"Sethen"var bar = foo;"Sethen is " + bar;"Sethen""Sethen is Sethen"bar"Sethen is Sethen"

于 2013-02-16T19:57:01.490 に答える
0
       step 1:
             var foo="sathen";
             It store string "sathen" in foo

        step 2:
              var bar=foo;
              bar value contains foos value now bar="sathen" and foo="sathen"

        step 3:     
              var bar= "sathen is " + bar
              it will replce the value of bar in right side is "sathen is" +bar value4
                 "sathen"  
         So,your ans will come "sathen is sathen"         
于 2013-02-16T19:59:02.770 に答える