myVar = !! someOtherVar

这个问题在这里已经有了答案:

  • 是什么 !! (不)没有运算符在JavaScript中? 31个答案

  • 如果你需要一个布尔值传递给函数,或者是肛门约在条件语句仅评估布尔值,即蒙上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

    上一篇: myVar = !!someOtherVar

    下一篇: javascript: What is a NOT NOT? (!! operator )