JavaScriptでは、必要に応じてデータ型が変換されます。これを型変換と言います。
文字列を連結する式の途中に数値を使用すると、数値は文字列に変換されます
数値から文字列への変換
var n = 101; var str = n + "回目のプロポーズ";
より明示的に型変換を行うString関数やtoStringメソッドを利用する方法もあります
明示的な型変換
var num = 10; var str1 = String(num); //String関数を使う方法 var str2 = num.toString(); //toStringメソッドを使う方法
toStringメソッドを利用すると基数を指定することもできます
基数を指定した変換
var num = 10; var str2 = num.toString(2); //1010 var str8 = num.toString(8); //12 var str16= num.toString(16); //a
数値が必要な場面で文字列を使用すると文字列は数値に変換されます
文字列から数値への変換
var product = "10" * "2"; var str = '100'; var num1 = str - 0; //文字列を数値に変換 var num2 = Number(str) //明示的に文字列を数値に変換
上の例では、暗黙の変換を利用して0を引くことでも数値への変換を実現しています。+は文字列結合演算子としても動作するため、0を足すことではうまくいかない点に注意が必要です。また、Number関数を利用することで明示的に変換することもできます。
その他、parseInt/parseFloat関数を利用する方法もあります。これらの関数は文字列の先頭が数値であれば、文字列を数値に変換することが出来、変換の際の基数を指定することも可能になっています。
parseInt/parseFloat関数
parseInt("10 bottle"); //10 parseFloat("3.14 cm"); //3.14 parseInt("ff",16); //255
論理値は数値コンテキストで使われるとtrueは1に変換されfalseは0に変換されます。論理値が文字列コンテキストで使用されると、trueは'true'という文字列へ、falseは'false'という文字列へ変換されます。論理値が必要な場所で数値を使用すると、数値が0またはNaNでない場合はtrueに変換され、0またはNaNの場合はfalseに変換されます。論理値が必要な場所で文字列を使用すると、空文字列でない場合はtrueに変換され、さもなくばfalseに変換されます。nullやundefined値はfalseに変換され、nullではないオブジェクトや配列、関数はtrueに変換されます。また、明示的な型変換を行うためのBoolean関数も用意されています
ECMAScript第三版からは、等値演算子(==)に加えて同値演算子(===)が用意されています。等値演算子はここで説明したような型変換を行いながら値が等しいかを調べるのに対し、同値演算子は型変換をせずに値が同一かを調べます。そのため、同値演算子を用いたほうがより厳密に値が等しいかをチェックすることができます。同値演算子をうまく使えば、より安全なコードが記述できることでしょう。