3 回答
TA贡献1807条经验 获得超9个赞
Boolean(expression)将简单地将表达式转换为boolean原始值,而new Boolean(expression)将围绕转换后的boolean值创建包装对象。
可以看出以下区别:
// Note I'm using strict-equals
new Boolean("true") === true; // false
Boolean("true") === true; // true
还有这个(感谢@hobbs):
typeof new Boolean("true"); // "object"
typeof Boolean("true"); // "boolean"
注意:虽然包装器对象将在必要时自动转换为基本体(反之亦然),但只有一种情况可以想到,您可以在哪里使用new Boolean,或者其他任何针对基本体的包装器-如果您想将属性附加到单个值。例如:
var b = new Boolean(true);
b.relatedMessage = "this should be true initially";
alert(b.relatedMessage); // will work
var b = true;
b.relatedMessage = "this should be true initially";
alert(b.relatedMessage); // undefined
TA贡献1946条经验 获得超4个赞
new Number( x )
创建一个新的包装对象。我认为没有理由使用此功能。
Number( x )
将传递的参数转换为Number值。您可以使用此方法将某些变量转换为Number类型。但是,这完成了相同的工作:
+x
通常:
您不需要这些:
new Number()
new String()
new Boolean()
您可以将其用于投射:
Number( value )
String( value )
Boolean( value )
但是,有更简单的铸造解决方案:
+x // cast to Number
'' + x // cast to String
!!x // cast to Boolean
TA贡献1798条经验 获得超7个赞
永远值得参考规格 ; 从15.7.1节开始:
当Number作为函数而不是构造函数调用时,它将执行类型转换。
同样,将其Boolean用作函数(15.6.1):
当布尔被称为函数而不是构造函数时,它将执行类型转换。
...这意味着您可以参考第9.2节(“ ToBoolean”):
根据表11,抽象运算ToBoolean将其自变量转换为Boolean类型的值:
Undefined= false
Null= false
Boolean=结果等于输入自变量(不进行转换)。
Number=如果参数为+ 0,-0或NaN,则结果为false;否则结果为true。
String=如果参数为空String(长度为零),则结果为false;否则为false。否则结果为true。
Object=true
new Boolean(value)和之间的区别Boolean(value)基本上是前者返回一个对象,而后者根据上面的内容返回一个原语。这很重要,因为对象是真实的:
var b = new Boolean(false);
display(b); // Displays "false"
if (b) {
display("true"); // This is the path that gets taken, displaying "true"
}
else {
display("false"); // This path does NOT get taken
}
实时示例 ...而您几乎总是需要布尔值来测试它们。
添加回答
举报