2012-02-10 18 views

risposta

4

L'operatore non doppio viene utilizzato per lanciare una variabile del tipo boolean. I dobule not si annullano a vicenda, ma visto che ! restituisce true o false, si ottiene solo uno dei due output.

Per esempio,

!!0 == true 

Così

!!myDiv == true 

getta myDiv ad un valore booleano e le prove ai danni vero. !!myDiv darà solo true o false.

+0

Wow, è fantastico. Scolpisci questo link basandoti sulla risposta di Jam. http://www.bennadel.com/blog/1784-Using-Double-Not-Operator-For-Boolean-Type-Casting.htm – mrtsherman

+2

Perché è necessario anche nell'esempio riportato nella domanda?Il predicato di una condizione 'if' è già interpretato come un booleano. Inoltre, '!! 0! == true', poiché' 0' è falsy. –

0

Il double-bang (!!) converte il valore in un vero booleano. Il primo colpo "non è" il valore potenzialmente verità/falsa di un vero booleano e il secondo "non è" torna a quello che dovrebbe essere il valore di un vero booleano.

0

!! costringerà qualsiasi oggetto in un booleano. Valuterà a vero per i valori non falsi. Ma non è magico, è solo un doppio no.

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

       !!0 === false 
!!parseInt("foo") === false // NaN is falsy 
       !!1 === true 
      !!-1 === true // -1 is truthy 

      !!"" === false // empty string is falsy 
      !!"foo" === true // non-empty string is truthy 
     !!"false" === true // ...even if it contains a falsy value 

    !!window.foo === false // undefined is falsy 
      !!null === false // null is falsy 

      !!{} === true // an (empty) object is truthy 
      !![] === true // an (empty) array is truthy; PHP 
0
  • & è una Comparion bitwise (risultante in un valore> = 0).
  • && è un confronto logico (che risulta in vero o falso).
  • = è un'assegnazione (viene sempre valutata come vera).
  • == è un confronto logico (che risulta in vero o falso).
+0

Non hai risposto alla domanda ... – Bojangles

+0

Sì, stupido, ho capito che non appena ho colpito "Post": P – twilson

0

!! myDiv significa due volte l'operatore! (è uguale a no).

myDiv sembra essere una classe,! MyDiv risulta in un valore booleano (falso o vero) e di nuovo! invertirà di nuovo questo valore booleano (non risultante nell'istanza della classe (puntatore)).

Si potrebbe anche scrivere (myDiv! = Null).

Personalmente preferisco myDiv! = Null ma !! myDiv è più breve.

0

È l'operatore double bang: converte myDiv in un valore booleano.

Problemi correlati