这个问题有一个双重否定表达式,它将类型转换为布尔值.
例如
var x = "test";
x === true; // evaluates to false
var x = !!"test";
x === true; //evalutes to true
Run Code Online (Sandbox Code Playgroud)
!会将"truthy"值转换为true,将"falsy"值转换为false.
"Falsy"值如下:
false0 (零)"" (空字符串)nullundefinedNaN如果变量x具有其中任何一个,则!!x返回false.否则,!!x将返回true.
在实践方面,做if(x)和做之间没有区别if(!!x),至少在javascript中没有区别:两者都会在相同的情况下进入/退出.
编辑:请访问http://www.sitepoint.com/blogs/2009/07/01/javascript-truthy-falsy/了解更多信息