为什么 !new Boolean(false) 在 JavaScript 中等于 false?
来自关于 JavaScript 类型的 jQuery 文档,这段代码描述了字符串转换为布尔值(该主题与这个问题无关,但它只是我找到代码的地方):
!"" // true
!"hello" // false
!"true" // false
!new Boolean(false) // false
我得到了前三个例子,但我没有得到最后一个例子,因为:
new Boolean(false) == false //true
!false // true
所以我会假设:
!new Boolean(false) // true
但是相反:
!new Boolean(false) // false, mind = blown
什么是这个我不甚至……
是因为:
new Boolean(false) === false // false
如果是的话,这样做有何目的?
From the jQuery documentation on JavaScript types comes this snippet of code describing the behavior of strings when converted to booleans (that topic is not related to this question, but it's just where I found the code):
!"" // true
!"hello" // false
!"true" // false
!new Boolean(false) // false
I get the first three examples, but I don't get the last example, because:
new Boolean(false) == false //true
!false // true
So I would assume:
!new Boolean(false) // true
But instead:
!new Boolean(false) // false, mind = blown
What is this I don't even...
Is it because:
new Boolean(false) === false // false
If so, what purpose does this serve?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
new Boolean(false)
返回一个对象。所有对象(浏览器中的document.all
除外)都是 真实。因此,任何对象的
!
都将始终为false
。为了向自己证明这一点,您可以在 JavaScript 控制台中运行以下代码:
此外,您可以使用严格相等运算符
===
来确认new Boolean(false)
是不是真的false
:顺便说一句,将
Boolean
函数作为函数调用(不使用new
)实际上会返回一个原语:new Boolean(false)
returns an object. All objects (exceptdocument.all
in browsers) are truthy.As a result,
!
of any object will always befalse
.To prove it to yourself, you can run this in your JavaScript console:
Also, you can use the strict equality operator
===
to confirm thatnew Boolean(false)
isn’t reallyfalse
:Incidentally, calling the
Boolean
function as a function—without thenew
—actually does return a primitive:因为
new Boolean
返回一个对象如此处所述。!
定义如下:和:
因此,它是一个对象,因此
ToBoolean
返回true
,因此!
返回false
。Because
new Boolean
returns an object as stated here.The
!
is defined as follows:and:
So, it is an object, thus
ToBoolean
returnstrue
, hence!
returnsfalse
.