-4

有什么区别:

!!(obj1 && obj2);

 (obj1 && obj2);
4

2 回答 2

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
于 2013-02-06T03:58:53.257 回答
0

空无一人。

一般来说,!!用于在不使用函数调用的情况下转换为布尔值,类似于如何0^用于转换为整数、""+如何转换为字符串等。

但是,在这种情况下,假设它在if语句中,则根本没有区别,因为if隐式“强制转换”为布尔值以查看它是否为真。

于 2013-02-06T03:58:41.033 回答