在布尔上下文中使用时,为什么要将对象转换为布尔值?

Der*_*ang 5 javascript

我明白!!将任何东西转换为布尔值,但为什么要这样做:

if (!!someObject) { ... }
Run Code Online (Sandbox Code Playgroud)

当你可以做的时候:

if (someObject) { ... }
Run Code Online (Sandbox Code Playgroud)

编辑:

只是为了澄清,我只是问为什么你会像第一个例子中那样编写代码,而不是第二个例子中的代码.有任何实际差异吗?

Jon*_*ski 1

它们之间没有显着差异。因此,很可能是个人偏好或明确意图。

不过,这可能是由于对如何或何时将值视为布尔值的不确定性/误解。

但是,if语句逻辑 NOT 运算符都使用内部ToBoolean()

如果ToBoolean( GetValue( exprRef )) 是true,[...]

oldValueToBoolean( GetValue( expr ))

运算符只是在语句本身的使用ToBoolean()之上再添加 2 轮否定。if但是,结果是一样的。