浏览网页无意中看到的,条件判断时强制强其转换成Boolean型。对于JavaScript来说在需要用到Boolean时会动态转换。
var b = new Boolean(false); if(b){ alert(5); // 弹出 }
?
当Boolean的参数是false,0,null,undefined时,b将是一个对象,if(b)中的b将为真,后续代码会执行。因此不要这么干。
去掉 new 则是没问题的。
var b = Boolean(false); if(b){ alert(5); // 不会弹出 }
?
当然也可以用这种方式方便的实现类型转换,如
var a = Number('22'); typeof a; // number var b = Boolean('null'); typeof b; // boolean var c = String(33); typeof c; // string?
1 楼
笨笨狗
2010-09-02
有new和没有new,行为是不同的(new的话返回包装对象,直接调用返回经过类型转换后的另一个“原始值”),这个在javascript权威指南的API参考部分有详细说明:)
2 楼
zhouyrt
2010-09-03
笨笨狗 写道
有new和没有new,行为是不同的(new的话返回包装对象,直接调用返回经过类型转换后的另一个“原始值”),这个在javascript权威指南的API参考部分有详细说明:)
谢谢您的提醒。