Hvilken metode for å sjekke om en variabel er initialisert er best/riktigst? (Forutsatt at variabelen kan inneholde hva som helst (streng, int, objekt, funksjon osv.)).
if (elem) { // or !elem
eller
if (typeof(elem) !== 'undefined') {
eller
if (elem != null) {
Du vil ha typeof
-operatoren. Nærmere bestemt:
if (typeof variable !== 'undefined') {
// the variable is defined
}
I de fleste tilfeller vil du bruke:
elem != null
I motsetning til en enkel if (elem)
tillater den 0
, false
, NaN
og ''
, men avviser null
eller undefinert
, noe som gjør den til en god, generell test for tilstedeværelsen av et argument eller en egenskap i et objekt.
De andre kontrollene er heller ikke feil, de har bare forskjellige bruksområder:
if (elem)
: kan brukes hvis elem
er garantert å være et objekt, eller hvis false
, 0
, etc. betraktes som "default" verdier (dermed ekvivalent med undefinert
eller null
).
typeof elem == 'undefined'
kan brukes i tilfeller der en spesifisert null
har en annen betydning enn en uinitialisert variabel eller egenskap.
Dette er den eneste sjekken som ikke kaster en feil hvis elem
ikke er deklarert (dvs. ingen var
-setning, ikke en egenskap i window
, eller ikke et funksjonsargument). Dette er etter min mening ganske farlig, ettersom det gjør at skrivefeil kan slippe ubemerket forbi. For å unngå dette, se metoden nedenfor.
En streng sammenligning mot undefinert
er også nyttig:
if (elem === undefined) ...
Men siden den globale undefined
kan overstyres med en annen verdi, er det best å erklære variabelen undefined
i det aktuelle området før du bruker den:
var undefined; // really undefined
if (elem === undefined) ...
Eller:
(function (undefined) {
if (elem === undefined) ...
})();
En annen fordel med denne metoden er at JS minifiers kan redusere undefined
-variabelen til ett enkelt tegn, noe som sparer deg for noen bytes hver gang.
Det avhenger av om du bare bryr deg om at variabelen er definert, eller om du vil at den skal ha en meningsfull verdi.
Hvis du sjekker om typen er udefinert, sjekker du om variabelen er definert ennå.
=== null
eller !== null
sjekker bare om verdien til variabelen er nøyaktig null
.
== null
eller != null
sjekker om verdien er udefinert
eller null
.
if(value)
sjekker om variabelen er undefinert
, null
, 0
eller en tom streng.