2015-04-20 20 views

risposta

11

!! converte qualsiasi valore a un valore boolean

> !!null 
false 

> !!true 
true 

> !!{} 
true 

> !!false 
false 

Se un valore falsey allora il risultato sarà false. Se è truthy il risultato sarà true.

Ancor più, la terza ! inverte il valore convertito in modo da esempi precedenti diventano:

> !!!null 
    true 

    > !!!true 
    false 

    > !!!{} 
    false 

    > !!!false 
    true 
+0

Non sarà mai bisogno di tre ''!. Solo uno o due :) –

+0

Sì, ma l'OP stava chiedendo, quindi sono appena andato a chiarire il concetto dietro questo :) –

+0

sì, ma è venuto fuori confuso. Il concetto qui è che il secondo '!' Nega la prima negazione, ripristinando così il valore al suo stato originale di verità, ma ora come vero booleano (che viene applicato dal primo '!') –

0

costringe oObject a booleani. Se era falsa (ad esempio 0, null, undefined, ecc.), Sarà false, altrimenti, true.

!oObject //Inverted boolean 
!!oObject //Non inverted boolean so true boolean representation 

Quindi !! non è un operatore, è solo il! operatore due volte.

indirizzati da: https://stackoverflow.com/a/784946/2218635

1

!! è usato per convertire il valore a destra di esso al suo valore booleano equivalente.

!!false === false 
!!true === true 
2

costringe ciò che viene restituito essere un boolean e non un valore intero o vuoto. Ad esempio, 0 restituisce false con == ma non con ===. Quindi per essere sicuro che qualsiasi numero intero 0 restituito verrà convertito in booleano, utilizziamo !!. Funziona anche se viene restituito null o undefined.

Quindi che cosa sta accadendo in realtà è:

var test = null; 
var result = !test; // returns true 
    result = !return; // returns false