myVar = !! someOtherVar
这个问题在这里已经有了答案:
如果你需要一个布尔值传递给函数,或者是肛门约在条件语句仅评估布尔值,即蒙上someOtherVar
由双否定它为你一个布尔值。
在非严格类型的语言中,! 运算符将值转换为布尔值。 这样做两次就相当于说
myVar = (boolean)someOtherVar
请注意,这不建议用于代码清晰度。
(改写澄清,简化)
该声明执行了几项不同的行动:
myVar = // This portion is a regular assignment, it will store the value of the suffix
!!someOtherVar; // This portion is evaluated to a boolean result
我认为, !!someOtherVar
是你真正想问的问题。 答案很简单:它反对感实性的(一Javascript'ism)执行两个逻辑NOT操作someOtherVar
。
换句话说,如果你明白了!
运营商,这只是结合其中两个( !!
不是一个不同的运营商)。 通过这样做,它实质上返回someOtherVar
的布尔值评估 - 换句话说,它是从someOtherVar
boolean
任何类型转换而来的。
所以...要经过这个,并注意myVar
的结果:
myVar = someOtherVar; // myVar will be whatever type someOtherVar is
myVar = !someOtherVar; // myVar will *always be boolean, but the inverse of someOtherVar's truthiness
myVar = !!someOtherVar; // myVar will *always be boolean, and be the equivalent of someOtherVar's truthiness
链接地址: http://www.djcxy.com/p/12651.html