考虑到在JavaScript中
console.log("var F=new Boolean(false)")
console.log("( F != (F==false))",(( F != (F==false)) ? "TRUE" : "false"));
console.log("(!F != (F==false))",((!F != (F==false)) ? "TRUE" : "false"));
打印:
( F != (F==false)) TRUE
(!F != (F==false)) TRUE
这意味着在典型情况下,布尔对象不能替代布尔原语,比如:
if(someBoolean) ... // always true
if(!someBoolean) ... // always false
同时,JavaScript的Set
和Map
集合允许包括基础数据类型在内的任何类型。
布尔对象有什么用呢?其他基础数据类型的对象一般也存在各种奇怪的不一致性,那么它们有什么用处呢?
注意:我特别想知道它们有哪些使用场景(如果有),而不是它们与其基础类型有何不同之处。
(new WeakMap).set(true, "foo")
会引发错误,而(new WeakMap).set(Boolean(true), "foo")
则不会。 - Jordan Running