!!一般用来将后面的表达式强制转换为布尔类型的数据(Boolean),也就是true或者false;因为JavaScript是弱类型语言(变量没有固定的数据类型)所以有时候需要强制转换为相应的类型。
例如:
var a;
console.log(a)=>>undefined
//因为只是声明了a变量,但并未指定变量的类型
var b=!!a;
console.log(b)
//!a是true,所以b的值是false
再比如:
var n={foo:2}
var result=!!n.foo等效于var result=n.foo||false
console.log(result)=>>2
所以!!的作用在于如果明确设置了n中foo的值,自然result的值就是n.foo的值,如果没有设置,result的值就是false。