惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
J
Java Code Geeks
I
InfoQ
V
Visual Studio Blog
M
MIT News - Artificial intelligence
H
Help Net Security
博客园_首页
Blog — PlanetScale
Blog — PlanetScale
F
Fortinet All Blogs
Apple Machine Learning Research
Apple Machine Learning Research
人人都是产品经理
人人都是产品经理
G
Google Developers Blog
A
About on SuperTechFans
腾讯CDC
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Last Week in AI
Last Week in AI
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
云风的 BLOG
云风的 BLOG
S
SegmentFault 最新的问题
WordPress大学
WordPress大学

博客园 - RockyYu

策略模式 unity中的WWW通讯问题 需求分析的方法 用TlbImp.exe生成程序可调用的Dll C++程序引用Dll 查询本地注册表,调用某后缀文件相应的执行程序,并打开文件 windows服务的安装和卸载 FFmpeg和GPL协议 List<T>的排序 C#POST数据,HttpWebRequest请求页面,HttpWebResponse返回数据 XMLHttpRequest的使用方法 错误: 无法生成临时类 图片滚动效果代码 - RockyYu - 博客园 一个不错的给图片添加说明文字的动态层的代码 - RockyYu - 博客园 截取中文字符串的js方法 js调用XML数据生成DIV 迭代器模式(Iterator Pattern) 创建CLR存储过程 JavaScript文件只在IE6下出错(“未结束的字符串常量”)的解决办法。
JavaScript Boolean (逻辑)对象 - RockyYu
RockyYu · 2009-05-06 · via 博客园 - RockyYu

今天,遇到需要将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")

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