This really confuses me.  I'm checking for an IE 10+ browser and everything online says use  (!!document.documentMode == true ), but why not (document.documentMode == false )?  How are they not the same?  Are we saying in the first the document.documentMode is missing and not false but null?
            Asked
            
        
        
            Active
            
        
            Viewed 1,162 times
        
    -1
            
            
         
    
    
        Heretic Monkey
        
- 11,687
- 7
- 53
- 122
 
    
    
        Sherpa11
        
- 153
- 1
- 1
- 14
- 
                    1`!` reverses the boolean sense, while `!!` basically is `Boolean(something)`. They're opposites. – Pointy Apr 28 '21 at 18:52
- 
                    The `!!` forces the value to be a boolean without negating it. It's a double negative. One `!` casts the value to a boolean in order to negate it, and the second `!` negates it again, giving you the original value cast to a boolean. – ray Apr 28 '21 at 18:54
- 
                    Does this answer your question? [What is the !! (not not) operator in JavaScript?](https://stackoverflow.com/questions/784929/what-is-the-not-not-operator-in-javascript) – Heretic Monkey Apr 28 '21 at 18:56
2 Answers
1
            
            
        ! forces the value to convert to that opposite truthy boolean. !! does that twice, meaning it forces it to convert to the same truthy boolean.
false => false
!false => true
!!false => false
Therefor
!!<Falsy value> => false
!!<Falsy value> == true => false
 
    
    
        Cody E
        
- 179
- 11
0
            
            
        Because undefined is not equal than false.
However, if you use Boolean in your document.documentMode it will evaluate it to true
Boolean(document.documentMode) == false
Because undefined is a falsy value
more info here.
 
    
    
        Martin Gainza Koulaksezian
        
- 1,231
- 9
- 20