教材は
等価演算子などで暗黙的に型変換される例が載っているが、必要性は薄く基本的には ===
を使うようにすべき。
暗黙的な変換は割とひどい仕様が載っている…
Boolean("string"); // -> true
任意の値を真偽値に変換できるが、どの値がtrueに、どの値がfalseになるのかは
というルールに従う。 falsy な値とは以下の6種類である。
String(1); // -> 1
真偽値に対しては Stringで true
または false
という文字列になる。同じように null
, undefined
, シンボルのプリミティブ型の値に対しては変換は見た目通りの文字列を得ることができる。
オブジェクトを文字列にしたい場合は、 JSON.stringify
などのより適切な方法を使うべきである。
String(Symbol("シンボルの説明"));
ユーザからの入力を数値にする場合などに使う。
// ユーザー入力を文字列として受け取る
const input = window.prompt("数字を入力してください", "42");
// 文字列を数値に変換する
const num = Number(input);
Number.parseInt
や Number.parseFloat
といった方法もある。渡された文字列が数字じゃない場合は NaN
が返る。
NaN
NaN
は何と演算しても結果が NaN
NaNは自分自身と一致しない性質があるので、これを利用してある値が NaN
かどうかを判定できる。
function isNaN(x) {
// NaNは自分自身と一致しない(NaN以外の値は厳密等価演算子で比較すると一致する)
return x !== x;
}
なおすでに Number.isNaN
というメソッドがあるので、そちらを利用すべき。
NaNは何と演算しても結果がNaNになってしまうため、デバッグが難しくなる。
JSではコメントで引数の型を記述する書式として JSDoc が有名。
JavaDocみたいな感じですね。