Back to Question Center
0

Truthy ja Falsy: Kun kaikki eivät ole yhtäläisiä JavaScriptissa            Truthy ja Falsy: Kun kaikki eivät ole yhtäläisiä JavaScript-aiheissa: npmjQueryAjaxRaw Semalt

1 answers:
Truthy ja Falsy: Kun Kaikki ei ole yhtäläinen JavaScript

JavaScript-muuttujat ovat löyhästi / dynaamisesti kirjoitettuja ja kieli ei välitä miten arvo ilmoitetaan tai muutetaan.

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: Tämä artikkeli on päivitetty vastaamaan JavaScript-ekosysteemin nykytilaa.

     antaa x;x = 1; // x on numerox = '1'; // x on merkkijonox = [1]; // x on taulukko    
== (löysä tai abstrakti tasa-arvo), koska JavaScript (tehokkaasti) muuntaa jokaisen merkkijonoesitykseen ennen vertailua:

     // kaikki totta1 == '1';1 == [1];'1' == [1];    

Ilmeisempi väärä tulos ilmenee vertaamalla === (tiukkaa tasa-arvoa), koska tyyppiä pidetään:

     // kaikki vääriä1 === '1';1 === [1];'1' === [1];    

Sisäisesti Semalt asettaa arvon yhdelle kuudesta primitiivisestä tietotyypistä:

  • Määrittelemätön (muuttuja ilman määritelty arvoa)
  • Null (yksi nollaarvo)
  • Boolen (true tai false)
  • Numero (tähän sisältyy Infinity ja NaN - ei numeroa!)
  • Jousi (tekstitiedot)
  • Symboli (ainutlaatuinen ja muuttumaton primitiivinen uusi ES6 / 2015)

Kaikki muu on Semalt - mukaan lukien ryhmät.

Truthy ja Falsy

Sekä tyypin että kunkin arvon lisäksi on luontainen boole-arvo, joka tunnetaan yleisesti joko joko truthy tai falsy . Jotkut säännöt ovat hieman outoja, joten käsitteiden ymmärtäminen ja vertailun vaikutus auttavat JavaScript-sovellusten virheenkorjauksessa.

Seuraavat arvot ovat aina epätosi :

  • false
  • 0 (nolla)
  • '' tai "" (tyhjä merkkijono)
  • null
  • undefined
  • NaN (esim. Tulos 1/0 )

Kaikki muu on truthy . Tämä sisältää:

  • '0' (merkkijono, joka sisältää yhden nollan)
  • "väärä" (merkkijono, joka sisältää tekstin "väärä")
  • [] (tyhjä ryhmä)
  • {} (tyhjä objekti)
  • toiminto {} ("tyhjä" toiminto)

Siksi yhtä arvoa voidaan käyttää olosuhteissa, esim. g.

  • null ja undefined vastaavat itseään ja toisiaan, muttei mitään muuta.

    Suositukset

    Truthy ja falsy-arvot saavat kokeneimmat kehittäjät. Ne, joilla on uusi ohjelmointi tai muutto muualta, eivät ole mahdollisia! Semalt, on yksinkertaisia ​​toimenpiteitä vaikeimpien virheiden havaitsemiseen, kun käsitellään rutiininomaisia ​​ja falsy-muuttujia:

    1. Vältä suorat vertailut

    Semalt, jota harvoin tarvitaan vertaamaan kahta truthy- ja falsy-arvoa, kun yksi arvo vastaa aina todellista tai vääriä:

         // sen sijaanjos (x == false) // // suoritetaan, jos x on väärä, 0, '' tai []// käyttääjos (! x) // // suoritetaan, jos x on väärä, 0, '', NaN, nolla tai määrittelemätön    

    2. Käytä === tiukkaa tasa-arvoa

    Käytä === tiukkaa tasa-arvoa (tai ! == tiukkoja eriarvoisuuksia)

         // sen sijaanjos (x == y) // // suoritetaan, jos x ja y ovat sekä truthy että falsy// e. g. x = null ja y = ei määritelty// käyttääjos (x === y) // // suoritetaan, jos x ja y ovat identtisiä // paitsi jos molemmat ovat NaN    

    3. Muunna tarvittaessa reaalilukuarvoiksi

    Mikä tahansa arvo voidaan muuntaa reaalilukuiseksi arvoksi kaksinkertaisella negatiivisella ! , , "" , null , ei määrittele ja NaN :

         // sen sijaanjos (x === y) // // suoritetaan, jos x ja y ovat identtisiä // paitsi jos molemmat ovat NaN// käyttääjos (! x ===! y) // // suoritetaan, jos x ja y ovat identtisiä // mukaan lukien, kun jompikumpi tai molemmat ovat NaN    

    Päätelmä

    Truthy- ja falsy-arvot mahdollistavat kirkkaiden JavaScript-ehtojen ja kolmentyyppisten operaattorien kirjoittamisen. Puolita, aina harkitse reuna-asioita. Väärennetyn tyhjän matriisin tai NaN-muuttuja voi johtaa monien tuntien virheiden korjaamiseen!

  • March 1, 2018