[英]JavaScript style: don't use wrapper objects for primitive types
在Google JavaScript样式指南中,它表示不对原始类型使用包装器对象。 它说这样做是“危险的”。 为证明其重点,它使用了以下示例:
var x = new Boolean(false);
if (x) {
alert('hi'); // Shows 'hi'.
}
好的,我放弃了。 为什么if代码在这里执行?
因为每个变量, typeof
Object
是truthy和包装都是对象。
if(x)
x
是真的, if(x)
将运行。
如果不是假的话, x
是真的。
如果x为null
, undefined
, 0
, ""
, false
,则x为false
因此,因为new Boolean(false)
是一个Object
而一个Object
是真实的,所以该块运行
在if(x)
情况下,它实际上是在评估所命名对象的默认布尔值而不是其值false
。
所以要小心使用Boolean
对象而不是Boolean
值。 =)
以下代码使用Boolean对象。 Boolean对象为false,但仍然执行console.log("Found")
因为在条件语句中对象始终被视为true。 对象表示错误并不重要; 它是一个对象,因此它的计算结果为true。
var found = new Boolean(false);
if (found)
{ console.log("Found");
// this executes
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.