有什么区别:
!!(obj1 && obj2);
和
(obj1 && obj2);
答案 0 :(得分:1)
第一个可能会返回一个字符串或一个对象,第二个将返回一个布尔值。
因为javascript中的对象可以是真实的,A && B
如果它是真实的,则会返回B
的值,这可能是一个对象。但使用!!将它转换为布尔值,因为!B会将其转换为true或false,第二个!将它移动到正确的布尔值
两者不同的例子:
var a = "test", b ="example"
var ex1 = ((a && b) === true) // false
var ex2 = (!!(a && b) === true) // true
答案 1 :(得分:0)
没有。
通常,!!
用于在不使用函数调用的情况下强制转换为布尔值,类似于0^
可用于强制转换为整数的方式,""+
可用于强制转换为整数字符串等
然而,在这种情况下,假设它在if
语句中,由于if
隐式“强制转换”为布尔值以查看它是否为真,所以没有任何区别。