为什么!新的布尔值(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

如果是这样,它的用途是什么?


幕布斯7119047
浏览 918回答 2
2回答

汪汪一只猫

new Boolean(false)返回一个非null 的对象。非null对象总是真实的。因此,!任何非null对象都将始终为false。要向自己证明,可以在javascript控制台中运行它(typeof new Boolean(false))  //"object"此外,您可以使用strict equality运算符确认new Boolean(false)不是真的false:new Boolean(false) === false  // false顺便说一句,将Boolean函数作为函数调用- 没有new - 实际上会返回一个原语!Boolean(false) // true(typeof Boolean(false))  //"boolean"
打开App,查看更多内容
随时随地看视频慕课网APP