⊗jsPmBsATC 43 of 505 menu

データ型の自動変換

ご存知の通り、JavaScriptの文字列は 引用符で囲む必要があります。文字列のすべての 文字が数字である場合もあります:

let a = '123';

この場合、変数aも文字列ですが、 いくつかのニュアンスがあります。

そのニュアンスは次の通りです:数字の文字列に対して 何らかの数学演算を実行すると、その演算は 実際に数字であるかのように実行されます:

alert('2' * '3'); // 6 を出力

この場合、JavaScriptは、文字列に対しては 不正だが、数字に対しては正しい演算を 実行しようとしていることを認識します。

JavaScriptはまた、実際には文字列が 引用符で囲まれた数字であることも認識します。そのためJavaScriptは これらの文字列を自動的に数字に変換し、 対応する数学演算を実行します。

これは、文字列が数字のみで構成されている場合に機能します。 そこに少なくとも一文字でも文字が含まれている場合 - JavaScriptはその演算を不正と見なし、 結果を値NaNにします:

alert('2' * '3s'); // NaN を出力

さらに、自動変換は、 演算が数学的に正しくても、文字列に対して 許容されない場合にも発生します。

例えば、文字列は(数字と異なり)乗算、除算、減算ができません。 そのため、このようなすべての演算では 数字を含む文字列が自動的に数値に変換されます。

しかし、文字列は、数字と同様に、演算子+を使って 加算することができます。これは、 加算の場合、自動変換が行われないことを意味します:

let a = '1' + '2'; alert(a); // '12' を出力 - 文字列の結合が発生

一方の項が数字で、もう一方が 文字列の場合、常に文字列が優先されます:

let a = 1 + '2'; alert(a); // '12' を出力

このような場合、JavaScriptは逆に、数字を自動的に 文字列に変換し、文字列の結合を実行します。

ただし、項が2つ以上ある場合にはニュアンスがあります: この場合、特定の型への変換は演算の実行順序に依存します。

次の例では、最初に23が 数字として加算され、その結果が文字列'1'に 文字列'5'として加えられ、 最終的に文字列'15'となります:

let a = '1' + (2 + 3); alert(a); // '15' を出力

括弧を外すと、すべてが左から右に加算されます。 つまり、最初に文字列'1'に 数字2が加えられ、結果として 文字列'12'が得られます。次に、この 文字列に数字3が加えられ、結果として 文字列'123'が得られます:

let a = '1' + 2 + 3; alert(a); // '123' を出力

しかし、次の例では数字23が先頭にあるため、最初に 数字として加算され、結果として 数字5が得られます。その後、この数字に 文字列'1'が加えられ、最終的に文字列'51'が得られます:

let a = 2 + 3 + '1'; alert(a); // '51' を出力

コードを実行せずに、何が画面に 出力されるか決定してください:

let a = '5' + '2'; alert(a);

コードを実行せずに、何が画面に 出力されるか決定してください:

let a = '5' + 2; alert(a);

コードを実行せずに、何が画面に 出力されるか決定してください:

let a = 5 + '2'; alert(a);

コードを実行せずに、何が画面に 出力されるか決定してください:

let a = 5 + 2; alert(a);

コードを実行せずに、何が画面に 出力されるか決定してください:

let a = '5' * '2'; alert(a);

コードを実行せずに、何が画面に 出力されるか決定してください:

let a = '5' - '2'; alert(a);

コードを実行せずに、何が画面に 出力されるか決定してください:

let a = '5' / '2'; alert(a);

コードを実行せずに、何が画面に 出力されるか決定してください:

let a = '5' % '2'; alert(a);

コードを実行せずに、何が画面に 出力されるか決定してください:

let a = '5s' * '2'; alert(a);

コードを実行せずに、何が画面に 出力されるか決定してください:

let a = '5s' + '2'; alert(a);

コードを実行せずに、何が画面に 出力されるか決定してください:

let a = (-'5') + (-'2'); alert(a);

コードを実行せずに、何が画面に 出力されるか決定してください:

let a = '5' * 1 + '2' * 1; alert(a);

コードを実行せずに、何が画面に 出力されるか決定してください:

let a = '5' * '1' + '2' * '1'; alert(a);

コードを実行せずに、何が画面に 出力されるか決定してください:

let a = '' + 3 + 1; alert(a);
日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否