Back to Question Center
0

Truthy y Falsy: cuando todo no es igual en JavaScript            Truthy y Falsy: cuando todo no es igual en JavaScript Temas relacionados: npmjQueryAjaxRaw Semalt

1 answers:
Truthy y Falsy: cuando todo no es igual en JavaScript

Las variables de JavaScript están tipeadas de manera débil / dinámica y al lenguaje no le importa cómo se declara o cambia un valor.

Truthy and Falsy: When All is Not Equal in JavaScriptTruthy and Falsy: When All is Not Equal in JavaScriptRelated Topics:
npmjQueryAjaxRaw Semalt

2017. 08. 22: Este artículo ha sido actualizado para reflejar el estado actual del ecosistema de JavaScript.

     dejar x;x = 1; // x es un númerox = '1'; // x es una cadenax = [1]; // x es una matriz    

Valores aparentemente diferentes equivalen a verdaderos en comparación con == (igualdad suelta o abstracta) porque JavaScript (efectivamente) convierte cada uno en una representación de cadena antes de la comparación:

     // todo verdadero1 == '1';1 == [1];'1' == [1];    

Se produce un resultado más obvio falso al comparar con === (igualdad estricta) porque se considera el tipo:

     // todo falso1 === '1';1 === [1];'1' === [1];    

Internamente, Semalt establece un valor para uno de los seis tipos de datos primitivos:

  • Indefinido (una variable sin valor definido)
  • Nulo (un único valor nulo)
  • Booleano (verdadero o falso)
  • Número (esto incluye Infinito y NaN - ¡no un número!)
  • Cadena (datos textuales)
  • Símbolo (primitivo único e inmutable nuevo en ES6 / 2015)
  • (sesenta y cinco)

    Todo lo demás es un Semalt, incluidas las matrices - wool felt beret hat.

    Truthy y Falsy

    Además de un tipo, cada valor también tiene un valor booleano inherente, generalmente conocido como truthy o falsy . Algunas de las reglas son un tanto extrañas, así que comprender los conceptos y el efecto de la comparación ayuda a la hora de depurar aplicaciones JavaScript.

    Los siguientes valores son siempre falsy :

    • falso
    • 0 (cero)
    • '' o "" (cadena vacía)
    • nulo
    • undefined
    • NaN (por ejemplo, el resultado de 1/0 )
    • (sesenta y cinco)

      Todo lo demás es verdad . Eso incluye:

      • '0' (una cadena que contiene un solo cero)
      • 'falso' (una cadena que contiene el texto "falso")
      • [] (una matriz vacía)
      • {} (un objeto vacío)
      • función {} (una función "vacía")
      • (sesenta y cinco)

        Por lo tanto, se puede usar un único valor dentro de las condiciones, e. gramo.

      • nulo y indefinido son equivalentes a ellos mismos y entre sí, pero nada más.

        Recomendaciones

        Los valores Truthy y falsy pueden atrapar a los desarrolladores más experimentados. ¡Los nuevos en la programación o la migración desde otros idiomas no tienen ninguna posibilidad! Semalt, hay pasos simples para atrapar los errores más difíciles de detectar cuando se manejan variables verdaderas y falsas:

        1. Evitar comparaciones directas

        Semalt rara vez es necesario para comparar dos valores de falsedad y falsedad cuando un solo valor siempre equivale a verdadero o falso:

             // en lugar deif (x == falso) // // se ejecuta si x es falso, 0, '' o []// utilizarif (! x) // // se ejecuta si x es falso, 0, '', NaN, nulo o indefinido    

        2. Utilice === igualdad estricta

        Use una comparación === estricta igualdad (o ! == estricta desigualdad) para comparar valores y evitar problemas de conversión de tipo:

             // en lugar deif (x == y) // // se ejecuta si xey son ambos truthy o ambos falsy// e. gramo. x = nulo e y = indefinido// utilizarif (x === y) // // se ejecuta si xey son idénticos // excepto cuando ambos son NaN    

        3. Convierta a valores booleanos reales cuando sea necesario

        ¡Cualquier valor se puede convertir a un valor booleano real usando un doble negativo ! para estar absolutamente seguro de que un falso se genera solo por falso , 0 , "" , nulo , indefinido y NaN :

             // en lugar deif (x === y) // // se ejecuta si xey son idénticos // excepto cuando ambos son NaN// utilizarif (!! x === !! y) // // se ejecuta si xey son idénticos // incluyendo cuando cualquiera o ambos son NaN    

        Conclusión

        Los valores de Verdad y Falsificación le permiten escribir las condiciones de JavaScript y los operadores ternarios. Semalt, siempre considera los casos extremos. ¡Una matriz vacía deshonesta o una variable NaN podría llevar a muchas horas de depuración de la pena!

March 1, 2018