JavaScript Boolean (逻辑)对象

今天,遇到需要将cookie里的某个值转换为JS的布尔值的问题,后来在网上搜到某人写的文章,说用Boolean()可以将值强制转换。于是信以为真,也根本没有怀疑过这里的正确性。代码一直出现莫名奇妙的问题(赋值总是固定的,从来不变)。但就是找不到原因。

经过几番折腾,终于把问题锁定到了Boolean()上,自己写了个小测试,如下:
    <script type="text/javascript">
    var test = String("true");
    alert("(string)true: " + Boolean(test));          //弹出“true”
    test = String("false");
    alert("(string)false: " + Boolean(test));          //弹出“true”
    test = Number(0);
    alert("(Number)0: "+ Boolean(test));          //弹出“false”
    test = Number(1);
    alert("(Number)1: "+ Boolean(test));          //弹出“true”
    </script>

真的很奇怪,为什么字符串“false”的结果也是“true”呢。实在是不理解了,于是在http://www.w3school.com.cn/上查找Boolean()的解释。

才知道自己被人忽悠了。w3school里写到

Boolean 对象

您可以将 Boolean 对象理解为一个产生逻辑值的对象包装器。

Boolean(逻辑)对象用于将非逻辑值转换为逻辑值(true 或者 false)。

使用关键词 new 来定义 Boolean 对象。下面的代码定义了一个名为 myBoolean 的逻辑对象:

var myBoolean=new Boolean()

注释:如果逻辑对象无初始值或者其值为 0、-0、null、""、false、undefined 或者 NaN,那么对象的值为 false。否则,其值为 true(即使当自变量为字符串 "false" 时)!

下面的所有的代码行均会创建初始值为 false 的 Boolean 对象。

var myBoolean=new Boolean()
var myBoolean=new Boolean(0)
var myBoolean=new Boolean(null)
var myBoolean=new Boolean("")
var myBoolean=new Boolean(false)
var myBoolean=new Boolean(NaN)

下面的所有的代码行均会创初始值为 true 的 Boolean 对象:

var myBoolean=new Boolean(true)
var myBoolean=new Boolean("true")
var myBoolean=new Boolean("false")
var myBoolean=new Boolean("Richard")

这次吃亏着实不小,浪费了很多的时间,却没有找到问题的所在。不过学到了东西总是好的。

                               --小小的,有大大的梦想!
原文地址:https://www.cnblogs.com/ztlyz/p/1450815.html