論理値への変換

広告

各値が論理値へ変換される時にどのように変換されるのかをまとめます。

種類論理値
数値0false
10true
文字列""false
"ab"true
nullnullfalse
グローバルプロパティundefinedfalse
undefinedfalse
Infinitytrue
オブジェクトobjtrue

値が論理値に変換されるのは、例えばif文の条件式などに値が記述された場合です。

if (値){
  ...
}

条件式では対象の値を評価してtrueかfalseかによって処理を分岐します。

数値

数値の場合、0だけがfalseに変換されます。0以外の数値は全てtrueに変換されます。

文字列

文字列の場合、空文字("")だけがfalseに変換されます。空文字以外は全てtrueに変換されます。

null

特殊な値であるnullはfalseに変換されます。

グローバルプロパティ

グローバルプロパティとして定義されているNaNはfalse、undefinedはfalse、Infinityはtrueに変換されます。

オブジェクト

(nullを除く)オブジェクトは全てtrueに変換されます。これはどのようなクラスのオブジェクトであっても同じです。

サンプルコード

では簡単なサンプルで試してみます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>JavaScript テスト</title>
</head>
<body>

<script type="text/javascript" src="./js/script3_1.js">
</script>

</body>
</html>
function checkBool(val){
  if (val){
    return "true";
  }else{
    return "false";
  }
}

document.write("<p>論理値への変換</p>");

document.write("<p>");

document.write("0  -->  " + checkBool(0) + "<br />");
document.write("10  -->  " + checkBool(10) + "<br />");
document.write("1.2e5  -->  " + checkBool(1.2e5) + "<br />");

document.write("''  -->  " + checkBool('') + "<br />");
document.write("'Sun'  -->  " + checkBool('Sun') + "<br />");

document.write("null  -->  " + checkBool(null) + "<br />");
document.write("undefined  -->  " + checkBool(undefined) + "<br />");
document.write("NaN  -->  " + checkBool(NaN) + "<br />");
document.write("Infinity  -->  " + checkBool(Infinity) + "<br />");

document.write("{x:90, y:110}  -->  " + checkBool({x:90, y:110}) + "<br />");
document.write("['東京', '大阪']  -->  " + checkBool(["東京", "大阪"]) + "<br />");
document.write("function(x){return x + 1;}  -->  " + checkBool(function(x){return x + 1;}) + "<br />");
document.write("new Boolean(true)  -->  " + checkBool(new Boolean(true)) + "<br />");
document.write("new Boolean(false)  -->  " + checkBool(new Boolean(false)) + "<br />");
document.write("new Number(0)  -->  " + checkBool(new Number(0)) + "<br />");
document.write("new Number(32)  -->  " + checkBool(new Number(32)) + "<br />");
document.write("new String('bom')  -->  " + checkBool(new String('bom')) + "<br />");

document.write("</p>");

上記を実際にブラウザ見てみると次のように表示されます。

p3-1

( Written by Tatsuo Ikura )