ほとんどの場合、演算子と関数は、与えられた値を自動的に適切な型に変換します。
例えば、alert
は表示するために任意の値 を自動的に文字列に変換します。数学演算は値を数値に変換します。
また、明示的に値を期待される型に変換する必要がある場合もあります。
この章では、オブジェクトについては扱いません。今のところ、プリミティブについてのみ説明します。
後ほど、オブジェクトについて学習した後、オブジェクトからプリミティブへの変換の章で、オブジェクトがどのように適合するかを見ていきます。
文字列変換
値の文字列形式が必要な場合、文字列変換が行われます。
例えば、alert(value)
は値を表示するためにそれを行います。
また、String(value)
関数を呼び出して値を文字列に変換することもできます。
let value = true;
alert(typeof value); // boolean
value = String(value); // now value is a string "true"
alert(typeof value); // string
文字列変換はほとんどの場合明らかです。false
は "false"
に、null
は "null"
になります。
数値変換
数学関数と式における数値変換は自動的に行われます。
例えば、除算 /
が数値でないものに適用されるとき。
alert( "6" / "2" ); // 3, strings are converted to numbers
Number(value)
関数を使用して、value
を明示的に数値に変換することができます。
let str = "123";
alert(typeof str); // string
let num = Number(str); // becomes a number 123
alert(typeof num); // number
明示的な変換は、テキストフォームのような文字列ベースのソースから値を読み取るものの、数値が入力されることを期待する場合によく必要となります。
文字列が有効な数値でない場合、このような変換の結果は NaN
になります。例えば、
let age = Number("an arbitrary string instead of a number");
alert(age); // NaN, conversion failed
数値変換のルール
値 | 結果... |
---|---|
undefined |
NaN |
null |
0 |
true および false |
1 および 0 |
文字列 |
先頭と末尾の空白文字(スペース、タブ\t 、改行\n などを含む)は削除されます。残りの文字列が空の場合、結果は 0 になります。それ以外の場合は、文字列から数値が「読み取られます」。エラーは NaN になります。 |
例
alert( Number(" 123 ") ); // 123
alert( Number("123z") ); // NaN (error reading a number at "z")
alert( Number(true) ); // 1
alert( Number(false) ); // 0
null
と undefined
はここで異なる動作をすることに注意してください。 null
はゼロになるのに対し、undefined
は NaN
になります。
ほとんどの数学演算子もこのような変換を実行します。それについては次の章で説明します。
真偽値変換
真偽値変換は最もシンプルな変換です。
論理演算(後で条件テストやその他の類似のものを学びます)で発生しますが、Boolean(value)
を呼び出して明示的に実行することもできます。
変換ルール
0
、空の文字列、null
、undefined
、NaN
のように、直感的に「空」である値はfalse
になります。- その他の値は
true
になります。
例えば
alert( Boolean(1) ); // true
alert( Boolean(0) ); // false
alert( Boolean("hello") ); // true
alert( Boolean("") ); // false
"0"
は true
ですいくつかの言語 (特に PHP) では、"0"
を false
として扱います。しかし、JavaScript では、空でない文字列は常に true
です。
alert( Boolean("0") ); // true
alert( Boolean(" ") ); // spaces, also true (any non-empty string is true)
まとめ
最も広く使用されている3つの型変換は、文字列、数値、真偽値への変換です。
文字列変換
– 何かを出力するときに発生します。String(value)
で実行できます。文字列への変換は、通常プリミティブ値に対しては明らかです。
数値変換
– 数値演算で発生します。Number(value)
で実行できます。
変換は次のルールに従います
値 | 結果... |
---|---|
undefined |
NaN |
null |
0 |
true / false |
1 / 0 |
文字列 |
文字列は「そのまま」読み取られ、両側の空白文字(スペース、タブ\t 、改行\n などを含む)は無視されます。空の文字列は 0 になります。エラーは NaN になります。 |
真偽値変換
– 論理演算で発生します。Boolean(value)
で実行できます。
次のルールに従います
値 | 結果... |
---|---|
0 、null 、undefined 、NaN 、"" |
false |
その他の値 | true |
これらのルールのほとんどは理解しやすく、覚えやすいです。人が間違いを犯しやすい注目すべき例外は次のとおりです。
undefined
は数値としては0
ではなくNaN
です。"0"
と" "
のようなスペースのみの文字列は、ブール値としては true です。
ここではオブジェクトについては触れません。JavaScript についてもっと基本的なことを学んだ後、オブジェクトに特化した章オブジェクトからプリミティブへの変換で後ほど戻ります。
コメント
<code>
タグを使用し、複数行の場合は<pre>
タグで囲み、10行以上の場合はサンドボックス ( plnkr, jsbin, codepen…)