为什么有人会使用像这样的表达式
if(!!window.JSON) alert('exists');
Run Code Online (Sandbox Code Playgroud)
而不仅仅是
if(window.JSON) alert('exists');
Run Code Online (Sandbox Code Playgroud)
?
是否有"!!"的另一种用法 东西?
CMS*_*CMS 15
!!将简单地导致布尔转换,根本不需要将此构造与if语句一起使用,在第一个片段中,将对象转换为布尔值没有意义,它将始终为true.
可以强制的唯一值false是null,undefined,NaN,0,和空字符串,当然,false任何东西都不会强迫到true.
当!!你想要确保得到一个布尔结果时,例如当使用逻辑&&和||运算符时,使用是有意义的.
那些运算符可以返回操作数的值,而不是布尔结果,例如:
true && "foo"; // "foo"
"foo" || "bar" ; // "foo"
Run Code Online (Sandbox Code Playgroud)
想象一下,你有一个测试两个值的函数,你期望一个布尔结果:
function isFoo () {
return 0 && true;
}
isFoo(); // returns 0, here it makes sense to use !!
Run Code Online (Sandbox Code Playgroud)
编辑:看你的编辑,if (!!window.JSON)就像我之前说的那样冗余,因为if语句本身将在评估条件表达式时在内部进行布尔转换.
| 归档时间: |
|
| 查看次数: |
450 次 |
| 最近记录: |