有条不紊地检查javascript

时间:2013-02-06 03:55:23

标签: javascript jquery object

有什么区别:

!!(obj1 && obj2);

 (obj1 && obj2);

2 个答案:

答案 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隐式“强制转换”为布尔值以查看它是否为真,所以没有任何区别。