JavaScript 型の変換 2

前回の「型の変換1」からの続きです。この記事では、論理値、オブジェクトの型の変換について書こうと思います。
論理値の型変換
前回の記事でも触れたけど、論理値(true , false)は数値コンテキストで使われると、true は 1に、false は 0に変換されるよ。
var myBool = true; var result = myBool - 0; // 結果:1 myBool = false; result = myBool - 0; // 結果:0
論理値→文字列
論理値を文字列にした場合は、そのまま true , false に変換されるよ
var myBool = true; var result = myBool + ""; // 結果:"true" myBool = false; result = myBool + ""; // 結果:"false" // 勿論、result は文字列型になっております。 alert( typeof result ); // 結果:string
Boolean()関数と論理否定演算子
論理値ではないデータを、論理値型にする場合は、Boolean()関数を使用するか、論理否定演算子を2度使うという方法があるよ
var value = 100; var result = Boolean(value); // 結果:true value = 0; result = !!value; // 結果:false
論理値falseと等価の値
ちなみに、NaNや0、undefinedは、論理値上では false と等価です。
// NaNは 0 / 0 で簡単に生み出せます var myNaN = 0/0; var result = !!myNaN; // 結果:false // undefinedは未定義型なんで、変数を初期化しなければundefinedになります。 var myUndef; var result = !!myUndef; // 結果:false
これらのNaN、undefined、0は論理値へ型変換するとfalseになるけど、この値以外のものは全て true へと変換されるよ
オブジェクトの型変換
オブジェクト型はご存知の通り複合型のデータなので、いままでの内容よりちょっと複雑です。まずは論理値で見てみましょう。オブジェクトは生成した時点で true となります。もちろん null で空にすればfalseとなります。
var myObj = new Object(); // オブジェクトの生成 var result = !!myObj; // 論理値に変換してみます。 alert(result); // 結果:true myObj=null; // 空っぽにしてみましょう。 result=!!myObj; // 論理値に変換してみます。 alert(typeof myObj); // 結果:object alert(result); // 結果:false
オブジェクトと二つのコンテキスト
細かい仕様は、また今度纏めますが、数値コンテキストと文字列コンテキストで使用した例を挙げます。
var myObj = new Object(); // オブジェクトの生成 result = myObj + ""; // 文字列と結合してみます。 alert(result); // 結果:[object Object] alert(typeof result); // 結果:string result = myObj - 0; // 数値化してみます。 alert(result); // 結果:NaN alert(typeof result); // 結果:number
型の変換については、他にもいろんなパターンが考えられるよ。
また気がついたら書き連ねるよ

