浏览网页无意中看到的,条件判断时强制强其转换成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参考部分有详细说明:)
谢谢您的提醒。