JavaScript で String の値がどうなっていると false になるのか調べてみた。

調査したデータの中では、null, undefined, 空文字列の3種類のみが false になった。それ以外は false にならない。

以下に、調査用サンプルコード。


<html>
<head>
<script>
window.onload = function(){

  var result = "";

  // ヌル文字「\0」やバックスペース「\b」も試す
  var list = [
    null, undefined, "",
    "\0", "\b",
    "a\b", "0",
    "-1", "a"
  ];

  var b;
  for(var i=0; i<list.length; i++){
    if(list[i]){
      b = true;
    }else{
      b = false;
    }
    result += "[" + list[i] + "]=[" + b + "]\n";
  }
  
  document.getElementById("display").innerText = result;
}
</script>
</head>
<body>
  <div id="display"></div>
</body>
</html>

実行結果 (Web ブラウザ Google Chrome 上の表示)。
バックスペースもヌル文字も画面に表示はされないが、 false にはならないことがわかる。

JavaScript の文字列が false になる値をチェックする

Chrome からコピーして Mac OS X 上の Sublime Text 2 というテキストエディタにペーストしてみたらこんな表示に。
バックスペースわかりやすい。ヌル文字は表示されない。

JavaScript の文字列が false になる値をチェックする

"0" が false になるような気がしていたけど、あれは JavaScript じゃなくて PHP だったか。

ref. PHPでfalseと判定されるもの - maru source

tags: javascript

Posted by NI-Lab. (@nilab)