myVar = !!someOtherVar

This question already has an answer here:

  • What is the !! (not not) operator in JavaScript? 31 answers

  • 如果你需要一个布尔值传递给函数,或者是肛门约在条件语句仅评估布尔值,即蒙上someOtherVar由双否定它为你一个布尔值。


    In non-strictly typed languages, the ! operator converts a value to a boolean. Doing it twice would be equivalent to saying

    myVar = (boolean)someOtherVar
    

    Note that this is not recommended for code clarity.


    (Rewritten to clarify, simplify)

    That statement performs a couple different actions:

    myVar = // This portion is a regular assignment, it will store the value of the suffix
            !!someOtherVar; // This portion is evaluated to a boolean result
    

    The !!someOtherVar , I assume, is what you're really asking about. The answer is simple: it performs two logical NOT operations against the truthiness (a Javascript'ism) of someOtherVar .

    In other words, if you understand the ! operator, this just combines two of them ( !! isn't a different operator). By doing this it essentially returns the boolean evaluation of someOtherVar --in other words, it's a cast from whatever type someOtherVar is to boolean .

    So... to walk through this, and pay attention to the result of 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/12652.html

    上一篇: Javascript! 和! 分歧

    下一篇: myVar = !! someOtherVar