如果("测试")和if(!!"test")有什么区别

use*_*648 1 javascript

有什么区别if("test")if(!!"test"),只有判断或真或假;

nai*_*kus 6

这个问题有一个双重否定表达式,它将类型转换为布尔值.

例如

var x = "test";

x === true; // evaluates to false

var x = !!"test";

x === true; //evalutes to true
Run Code Online (Sandbox Code Playgroud)


kik*_*ito 6

!会将"truthy"值转换为true,将"falsy"值转换为false.

"Falsy"值如下:

  • false
  • 0 (零)
  • "" (空字符串)
  • null
  • undefined
  • NaN

如果变量x具有其中任何一个,则!!x返回false.否则,!!x将返回true.

在实践方面,做if(x)和做之间没有区别if(!!x),至少在javascript中没有区别:两者都会在相同的情况下进入/退出.

编辑:请访问http://www.sitepoint.com/blogs/2009/07/01/javascript-truthy-falsy/了解更多信息