TORNAR

Comprovar undefined en JavaScript

2 min de lectura

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 de undefined é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.