3

次の評価は何ですか?

"1"+2+4

これはどうですか:

5 + 4 + "3"

最初のケースで"1"は、 is は文字列であるため、すべてが文字列であるため、結果は"124". 2 番目のケースでは、93ここで何が起きているのでしょうか? あるインスタンスでは加算が行われ、別のインスタンスでは文字列の連結が行われるのはなぜですか?

var x = "1" + 2 + 4;
var z = 5 + 4 + "3";
console.log(x); // "124"
console.log(z); // 93 

誰でもこれを説明できますか?

4

5 に答える 5

5

式は左から右に評価されます。

"1"+2+3
 ^--^
"12" //string  +3
  ^_____________^
 "123"  //string

2番目の場合

 1+2+"3"
 ^_^
  3+"3"
  ^___^
  "33" // string
于 2013-02-05T05:06:58.623 に答える
1

バイナリ操作を実行するたびに操作順序 (rtl または ltr) を考えて、それに応じて変換するので、5+4 は int になり、(5+4) + "3" は文字列になります。"3" は文字列だからです。

同じ方法が異なる例に適用されます

于 2013-02-05T05:05:28.343 に答える
0

var x = "1" + 2 + 4; // 124

これは、文字列「1」を取得し、それに「2」と「4」を文字列として連結しています。

var z = 5 + 4 + "3"; // 93

これは、数字の 4 と 5 を足し合わせて数字の 9 にし、それに文字列 "3" を連結して別の文字列を生成します。

ここで重要なことは、ここで行っていることの最終結果が文字列連結であるということです。数値を評価する順序は異なりますが、最終結果は文字列になります。

于 2013-02-05T05:06:36.740 に答える
0

どちらの場合も、型変換と左から右への優先順位を適用します。最初のものでは、

var x = "1" + 2 + 4; // 124

コンパイラは 1 を文字列として受け取り、その後 2 と連結します。12 が文字列であるため、4 と連結し、結果は文字列として「124」を生成します。

var z = 5 + 4 + "3"; // 93

2番目の最初の5と4は数値なので、加算すると結果は9になります。これは文字列3と連結され、出力は文字列として93になります。

于 2013-02-05T05:26:47.710 に答える
0

最初のケースでは、最初に文字列 (1) を作成し、次に JavaScript が次の数値を文字列 (124) として連結します。

2番目のものでは、最初に数値を作成し、次にJavaScriptが2番目の数値をこの最初の数値に追加し(5 + 4 = 9)、次に文字列を追加して9と3の連結を行います

于 2013-02-05T05:08:56.100 に答える