Javascript 在布尔上下文中使用时,为什么要将对象转换为布尔值?
我理解Javascript 在布尔上下文中使用时,为什么要将对象转换为布尔值?,javascript,Javascript,我理解将任何内容转换为布尔值,但为什么要这样做: if (!!someObject) { ... } 当你能做到的时候: if (someObject) { ... } 编辑: 我只是想澄清一下,我只是想问,为什么要像第一个例子那样编写代码,而不是像第二个例子那样编写代码。有什么实际的区别吗?它们之间没有显著的区别。所以,最有可能的是,这是个人偏好,或者是明确的意图 不过,这可能是因为不确定/误解了如何或何时将值视为布尔值 但是,两者都使用内部的ToBoolean(): 如果((exprRe
代码>将任何内容转换为布尔值,但为什么要这样做:
if (!!someObject) { ... }
当你能做到的时候:
if (someObject) { ... }
编辑:
我只是想澄清一下,我只是想问,为什么要像第一个例子那样编写代码,而不是像第二个例子那样编写代码。有什么实际的区别吗?它们之间没有显著的区别。所以,最有可能的是,这是个人偏好,或者是明确的意图
不过,这可能是因为不确定/误解了如何或何时将值视为布尔值
但是,两者都使用内部的ToBoolean()
:
如果((exprRef))为true
,[…]
设oldValue为((expr))
运算符只需再添加两轮ToBoolean()
,并在if
语句自身使用的基础上加上否定。但是,结果是一样的。请参阅:例如return!!5
或~arr.indexOf(n)
。有很多用法,不仅仅是if
语句。@elclans我理解,但我在第一个示例中特别询问了用法。没有真正的用途代码>在if
语句AFAIK中。你可以依靠真实或虚假。当您想要执行比较时,代码>仅在if
中有用,例如,如果您想要检查两件事情都是真实的或都是虚假的,您可以在(!!a===!!b){/*../}
中执行操作。编辑:如果这是数字,那么它可能意味着“a
和b
都是0
或a
和b
都是非零”