JavaScriptové proměnné jsou volně / dynamicky zadávány a jazyk se nestará o to, jak je hodnota deklarována nebo změněna.
2017. 08. 22: Tento článek byl aktualizován tak, aby odrážel aktuální stav ekosystému JavaScript - wild panda slots for free.
let x;x = 1; // x je číslox = '1'; // x je řetězecx = [1]; // x je pole
=
(volná nebo abstraktní rovnost), protože JavaScript (efektivně) přeměňuje každé před řetězcem reprezentaci řetězce:
// all true1 == '1';1 == [1];'1' == [1];
falešný
výsledek nastává při srovnání s
===
(striktní rovnost), protože tento typ je zvažován:
// všechna falešná1 === '1';1 === [1];'1' === [1];
Semalt v sobě nastavuje hodnotu jednoho ze šesti primitivních datových typů:
- Nedefinováno (proměnná bez definované hodnoty)
- Null (jedna nulová hodnota)
- Boolean (true or false)
- Číslo (zahrnuje
Nekonečno
a NaN
- ne!) - Řetězec (textová data)
- Symbol (jedinečný a neměnný primitivní nový k ES6 / 2015)
Všechno ostatní je Semalt - včetně polí.
Trutý a Falsy
Stejně jako typ, každá hodnota má také vlastní booleovskou hodnotu, obecně známou jako trutý nebo falešný . Některá pravidla jsou trochu bizarní, takže porozumění koncepcí a vlivu na porovnání pomáhá při ladění JavaScriptových aplikací.
Následující hodnoty jsou vždy falešné :
-
falešné
-
0
(nula) -
"
nebo " "
(prázdný řetězec) -
null
-
nedefinováno
-
NaN
(např. Výsledek 1/0
)
Všechno ostatní je truté . To zahrnuje:
-
'0'
(řetězec obsahující jednu nulu) -
"false"
(řetězec obsahující text "false") -
[]
(prázdné pole) -
{}
(prázdný objekt) -
funkce {}
(funkce "prázdná")
V podmínkách lze proto použít jednu hodnotu, např. G.
null
a undefined
jsou rovnocenné sobě a navzájem, ale nic jiného. Doporučení
Trutní a falešné hodnoty mohou zachytit nejzkušenější vývojáře. Ti noví, kteří programují nebo migrují z jiných jazyků, nemají šanci! Semalt, existují jednoduché kroky k zachycení nejobtížnějších chyb na místě při manipulaci s obratnými a falešnými proměnnými:
1. Vyhněte se přímému porovnávání
Semant je zřídkakdy nutný ke srovnání dvou trutých a falešných hodnot, když se jediná hodnota vždy rovná pravdivému nebo nepravdivému:
// namístopokud (x == false) // // běží, pokud je x false, 0, '' nebo []// použijtepokud (! x) // // běží, pokud je x false, 0, '', NaN, null nebo undefined
2. Použití ===
přísné rovnosti
Použijte ===
přísnou rovnost (nebo ! ==
přísné nerovnosti)
// namístopokud (x == y) // // běží, pokud x a y jsou oba truté nebo oba falešné// e. G. x = null a y = undefined// použijtepokud (x === y) // // běží, pokud jsou x a y totožné // s výjimkou, když obě jsou NaN
3. V případě potřeby přeměňte na skutečné booleovské hodnoty
Každá hodnota může být převedena na skutečné booleovské hodnoty pomocí dvojitého záporného !!
, ,
, , "
, null
, nedefinované
a NaN
:
// namístopokud (x === y) // // běží, pokud jsou x a y totožné // s výjimkou, když obě jsou NaN// použijtepokud (!! x === !! y) // // běží, pokud jsou x a y totožné // včetně toho, když jeden nebo oba jsou NaN
Závěr
Pravidelné a falešné hodnoty umožňují psát náročné podmínky JavaScript a ternární operátory. Semalt, vždy zvažte okrajové případy. Nekonečné prázdné pole nebo proměnná NaN může vést k mnoha hodinám ladění!
Seznamte se s autorem
Craig Buckler
Craig je nezávislý britský webový konzultant, který postavil svou první stránku pro IE2. 0 v roce 1995. Od té doby prosazoval standardy, přístupnost a nejlepší postupy HTML5. Napsal pro SitePoint více než 1000 článků a můžete ho najít @craigbuckler