【JS】 JavaScript で、Booleanに変換した際の注意事項

はじめに

 * JavaScriptにおいて、文字列から、Boolean に変換した際に、new Boolean(【文字列】)で変換していた。
   ただ、以下のケースで意図した動きにならなかったので、メモ。

(個人的に)意図した動きにならなかったケース

var boolValue = new Boolean("false"); // boolValue = true
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Boolean
より抜粋

値が省略された場合や、値が 0, -0, null, false, NaN, undefined あるいは空文字列 ("") であった場合、
オブジェクトは false の初期値を持ちます。
それ以外のあらゆる値は、オブジェクトや "false" という文字列も含めて、true の初期値を持つオブジェクトを生成
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

解決方法

 * 調べてみたけど、結局、独自に実装するしかないかと。。。

構文

targetValue == "true";

サンプル

* 「True」「False」にも対応
<!DOCTYPE html>
<html>
<body>
<div id="booleanValue1"></div>
<br>
<div id="booleanValue2"></div>
<div id="booleanValue3"></div>
<div id="booleanValue4"></div>
<div id="booleanValue5"></div>
<script type="text/javascript">
var booleanValue1 = new Boolean("false"); // booleanValue1 = true
var booleanValue2 = parseBoolean("false"); // booleanValue2 = false
var booleanValue3 = parseBoolean("False"); // booleanValue3 = false
var booleanValue4 = parseBoolean("true"); // booleanValue4 = true
var booleanValue5 = parseBoolean("True"); // booleanValue5 = true

document.getElementById("booleanValue1").innerHTML = 'booleanValue1 = new Boolean("false"); => ' + booleanValue1;
document.getElementById("booleanValue2").innerHTML = 'booleanValue2 = new Boolean("false"); => ' + booleanValue2;
document.getElementById("booleanValue3").innerHTML = 'booleanValue3 = new Boolean("False"); => ' + booleanValue3;
document.getElementById("booleanValue4").innerHTML = 'booleanValue4 = new Boolean("true"); => ' + booleanValue4;
document.getElementById("booleanValue5").innerHTML = 'booleanValue5 = new Boolean("True"); => ' + booleanValue5;

function parseBoolean(targetValue) {
   if (!targetValue) {
      return false;
   }
   
   return (targetValue.toLowerCase()) == "true";
}
</script>
</body>
</html>

出力結果

booleanValue1 = new Boolean("false"); => true

booleanValue2 = new Boolean("false"); => false
booleanValue3 = new Boolean("False"); => false
booleanValue4 = new Boolean("true"); => true
booleanValue5 = new Boolean("True"); => true