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