はじめに
* 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