来自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
如果是这样,这有什么目的?
new Boolean(false)返回一个不为null 的 对象 。非空对象始终是真实的。
new Boolean(false)
结果,!任何非null对象将始终为false。
!
为了向自己证明,您可以在JavaScript控制台中运行它
(typeof new Boolean(false)) //"object"
另外,您可以使用strict equality运算符来确认new Boolean(false)不是false:
strict equality
false
顺便说一句,在Boolean没有新函数的情况下将函数作为函数调用实际上确实会返回原始
Boolean
!Boolean(false) // true (typeof Boolean(false)) //"boolean"