1. ホーム
  2. javascript

[解決済み] JavaScriptで[1,2] + [3,4] = "1,23,4 "になるのはなぜですか?

2022-03-22 17:33:28

質問

ある配列の要素を別の配列に追加したいので、次のようにしてみました。

[1,2] + [3,4]

と反応した。

"1,23,4"

どうしたんですか?

どうすればいい?

その + 演算子 は配列に対して定義されていません。 .

何が起こるかというと、Javascriptが 配列を文字列に変換する を作成し、それを連結する。

更新情報

この質問と私の回答は多くの注目を浴びているので、私は、この質問と私の回答が役に立つと思ったし、関連性があると思った。 概要 がどのようなものなのかについて + 演算子の挙動も一般的です。

では、ここからが本題です。

E4Xや実装固有のものを除くと、(ES5時点の)Javascriptには 6 組み込み データ型 :

  1. 未定義
  2. Null
  3. ブーリアン
  4. 数値
  5. 文字列
  6. オブジェクト

ただし typeof は、やや紛らわしいことに object をNullに、そして function を呼び出し可能なObjectとして使用する場合、Nullは実際にはObjectではなく、厳密に言えば、仕様に準拠したJavascriptの実装では、すべての関数がObjectであると見なされるのです。

そうなんです、Javascriptには プリミティブ配列なし というオブジェクトのインスタンスのみです。 Array を、痛みを和らげるための構文上の工夫を施しています。

さらに混乱に拍車をかけるのが new Number(5) , new Boolean(true)new String("abc") はすべて object 型であり、期待されるような数値、ブール値、文字列ではない。とはいえ、算術演算子については NumberBoolean は数字と同じように振る舞います。

簡単でしょう?これで、概要の説明に移れます。

の異なる結果タイプ + オペランドタイプ別

            || undefined | null   | boolean | number | string | object |
=========================================================================
 undefined  || number    | number | number  | number | string | string | 
 null       || number    | number | number  | number | string | string | 
 boolean    || number    | number | number  | number | string | string | 
 number     || number    | number | number  | number | string | string | 
 string     || string    | string | string  | string | string | string | 
 object     || string    | string | string  | string | string | string | 

* Chrome13、FF6、Opera11、IE9に適用されます。他のブラウザやバージョンの確認は、読者の方の練習として残しておきます。

注意 で指摘されているように CMS のようなオブジェクトの特定のケースについては Number , Boolean と、カスタムなものは + 演算子は必ずしも文字列の結果を生成するとは限りません。オブジェクトからプリミティブへの変換の実装によって異なることがあります。例えば var o = { valueOf:function () { return 4; } }; 評価 o + 2; プロデュース 6 , a number を評価する。 o + '2' が生成されます。 '42' , a string .

概要表がどのように生成されたかを見るには、以下をご覧ください。 http://jsfiddle.net/1obxuc7m/