Comprovar undefined en JavaScript
Si escrius JavaScript regularment, probablement has necessitat comprovar si una
variable és undefined.
Però, quina és la millor manera de fer-ho?
La manera intuïtiva
Qualsevol programador amb experiència en altres llenguatges intuirà:
if (x === undefined) { ... }
Això funciona sense problemes--gairebé.
La comparació directa amb undefined funciona en tots els navegadors moderns.
Els navegadors antics, però, permetien la reassignació:
undefined = "new value";
Amb aquesta reassignació, la comparació directa falla.
ECMAScript 5 va arreglar això el 2009:
15.1.1.3 undefined
El valor deundefinedés undefined (veure 8.1). Aquesta propietat té els atributs{ [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }.
La manera "segura"
Si suportes navegadors antics i et preocupa la reassignació de undefined,
utilitza mètodes alternatius.
Llegint el tipus
L'operador typeof
retorna "undefined" per a valors undefined:
if (typeof x === "undefined") { ... }
Nota: typeof no llança error per a variables no declarades.
Utilitzant void
L'operador void també retorna undefined:
if (x === void(0)) { ... }
El zero no té significat especial. Com indica MDN:
L'operador void avalua l'expressió donada i després retorna undefined.
Quina manera és millor
Com a consultor, vaig aprendre la millor resposta: depèn. Aquí van alguns consells.
Segueix les convencions existents del codi base. Per a codi nou només en
navegadors moderns, utilitza comparació directa--és clara i llegible fins i tot
per a principiants en JavaScript. Per a suportar navegadors antics, crea una
funció isUndefined amb el teu mètode preferit dins. Això expressa la intenció
clarament.