Back to Question Center
0

Truthy and Falsy: quando All non è uguale in JavaScript            Truthy and Falsy: Quando All non è uguale in JavaScript Argomenti correlati: npmjQueryAjaxRaw Semalt

1 answers:
Truthy and Falsy: When All non è uguale in JavaScript

Le variabili JavaScript sono tipicamente / dinamicamente tipizzate e la lingua non si cura di come un valore viene dichiarato o modificato.

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: Questo articolo è stato aggiornato per riflettere lo stato attuale dell'ecosistema JavaScript - peru machu picchu tour.

     lascia x;x = 1; // x è un numerox = '1'; // x è una stringax = [1]; // x è un array    

Valori apparentemente diversi equivalgono a true se confrontati con == (uguaglianza libera o astratta) poiché JavaScript (efficacemente) converte ciascuno in una rappresentazione di stringa prima del confronto:

     // tutto vero1 == '1';1 == [1];'1' == [1];    

Un risultato più ovvio falso si verifica confrontando con === (uguaglianza rigorosa) perché il tipo è considerato:

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

Internamente, Semalt imposta un valore su uno dei sei tipi di dati primitivi:

  • Non definito (una variabile senza valore definito)
  • Null (un singolo valore null)
  • Boolean (true o false)
  • Numero (questo include Infinito e NaN - non un numero!)
  • Stringa (dati testuali)
  • Symbol (un primitivo unico e immutabile nuovo a ES6 / 2015)

Tutto il resto è una Semalt - inclusi gli array.

Truthy and Falsy

Oltre a un tipo, ogni valore ha anche un valore booleano intrinseco, generalmente noto come falsa verità o falsa . Alcune regole sono un po 'bizzarre, quindi comprendere i concetti e l'effetto sul confronto aiuta quando si esegue il debug delle applicazioni JavaScript.

I seguenti valori sono sempre falsi :

  • false
  • 0 (zero)
  • '' o "" (stringa vuota)
  • null
  • indefinito
  • NaN (ad esempio il risultato di 1/0 )

Tutto il resto è verità . Ciò include:

  • '0' (una stringa contenente un singolo zero)
  • 'false' (una stringa contenente il testo "false")
  • [] (una matrice vuota)
  • {} (un oggetto vuoto)
  • function {} (una funzione "vuota")

Un singolo valore può quindi essere utilizzato all'interno di condizioni, e. g.

  • nullo e non definito sono equivalenti a se stessi e l'un l'altro ma nient'altro.

    Raccomandazioni

    I valori di verità e falsità possono cogliere gli sviluppatori più esperti. Quelli nuovi alla programmazione o alla migrazione da altre lingue non hanno possibilità! Semalt, ci sono semplici passaggi per cogliere gli errori più difficili da seguire quando si gestiscono variabili vere e false:

    1. Evita confronti diretti

    Semalt raramente è necessario confrontare due valori di verità e falsi quando un singolo valore sarà sempre uguale a vero o falso:

         // invece diif (x == false) // // viene eseguito se x è falso, 0, '' o []// usose (! x) // // viene eseguito se x è falso, 0, '', NaN, null o non definito    

    2. Use === strict ugality

    Utilizzare un === confronto di uguaglianza rigorosa (o ! == disuguaglianza rigorosa) per confrontare i valori ed evitare problemi di conversione di tipo:

         // invece dise (x == y) // // gira se xey sono entrambi veri o entrambi falsi// e. g. x = null e y = non definito// usose (x === y) // // viene eseguito se xey sono identici // tranne quando entrambi sono NaN    

    3. Converti in valori booleani reali ove necessario

    Qualsiasi valore può essere convertito in un valore booleano reale usando un doppio negativo !! per essere assolutamente certi che un falso sia generato solo da false , 0 , "" , nullo , indefinito e NaN :

         // invece dise (x === y) // // viene eseguito se xey sono identici // tranne quando entrambi sono NaN// usoif (!! x === !! y) // // viene eseguito se xey sono identici // incluso quando uno o entrambi sono NaN    

    Conclusione

    I valori di verità e falsità consentono di scrivere condizioni JavaScript terse e operatori ternari. Semalt, considera sempre i casi limite. Un array vuoto canaglia o una variabile NaN potrebbe portare a molte ore di problemi di debugging!

  • March 1, 2018