2012-02-10 26 views

Respuesta

4

La doble no operador se utiliza para convertir una variable con el tipo boolean. Los dobule nots se cancelan entre sí, pero como ! devuelve true o false, solo obtiene uno de los dos resultados.

Por ejemplo,

!!0 == true 

Así

!!myDiv == true 

Yesos myDiv a un valor booleano y pruebas contra cierto. !!myDiv solo dará true o false.

+0

Guau, eso es genial. Desenterró este enlace basado en la respuesta de Jam. http://www.bennadel.com/blog/1784-Using-Double-Not-Operator-For-Boolean-Type-Casting.htm – mrtsherman

+2

¿Por qué es esto necesario incluso en el ejemplo dado en la pregunta?El predicado de una condición 'if' ya se interpreta como un booleano. Además, '!! 0! == verdadero', ya que' 0' es falso. –

0

El double-bang (!!) convierte el valor en un verdadero booleano. La primera explosión "no" es el valor potencialmente veraz/falso de un booleano apropiado y el segundo "no" lo devuelve a lo que el valor debe ser como un booleano apropiado.

0

!! forzará cualquier objeto en un booleano. Se evaluará como verdadero para valores que no sean falsos. Pero no es magia, es solo un doble 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
  • & es una comparion bit a bit (que resulta en un valor> = 0).
  • && es una comparación lógica (que resulta en verdadero o falso).
  • = es asignación (siempre se evalúa como verdadera).
  • == es una comparación lógica (que da como resultado verdadero o falso).
+0

No ha respondido la pregunta ... – Bojangles

+0

Sí, me parece tonto, me di cuenta de que tan pronto como presiono "Publicar": P – twilson

0

!! myDiv significa dos veces el operador! (es igual a no).

myDiv parece ser una clase,! MyDiv da como resultado un booleano (falso o verdadero) y otra vez! revertirá este booleano nuevamente (no dando como resultado la instancia de clase (puntero)).

También podría escribir (myDiv! = Null).

Personalmente prefiero myDiv! = Null pero !! myDiv es más corto.

0

Es el operador de doble explosión: convierte myDiv a un valor booleano.

Cuestiones relacionadas