This article needs an editorial review. How you can help.
Resum
El valor de la propietat global undefined
representa el valor undefined
. És un dels tipus primitius de JavaScript.
Property attributes of undefined |
|
---|---|
Writable | no |
Enumerable | no |
Configurable | no |
Sintaxi
undefined
Descripció
undefined
és una propietat de l'objecte global, és a dir, és una variable dins l'àmbit global.
Als navegadors moderns (JavaScript 1.8.5 / Firefox 4+), undefined
és una propietat no configurable i que no pot ser escrita, tal com denota la especificació ECMAScript 5. Encara que no sigui el cas, és convenient evitar sobreescriure el seu valor.
Una variable a la que no s'ha assignat cap valor és de tipus undefined
. Un mètode o sentència retornarà undefined
si la variable que s'evalua no te assignat cap valor. Una funció retornarà undefined
si no es retorna
un valor explícitament.
Degut a que undefined
no és una paraula reservada
es pot emprar com a identificador (nom de variable) a qualsvol àmbit que no sigui el global.
// mostra "foo string" (function(){ var undefined = 'foo'; console.log(undefined, typeof undefined); })(); // mostra "foo string" (function(undefined){ console.log(undefined, typeof undefined); })('foo');
Exemples
Igualtat estricta i undefined
Es pot emprar undefined
en combinació amb els operadors de igualtat i no-igualtat per determinar si una variable té assignat un valor.
var x; if (x === undefined) { // sentències que s'executaran } else { // sentències que no s'executaran }
===
) en comptes de l'operador standard d'igualtat (==
) ja que x == undefined
també comprova si x
és null
, mentre que l'operador d'igualtat estricta no ho fa. null
no és equivalent a undefined
. Per més detalls vegeu comparació d'operadors
.L'operador Typeof
i undefined
De forma alternativa, es pot emprar typeof
:
var x; if (typeof x === 'undefined') { // sentències que s'executaran }
Una raó per utilitzar typeof
és que no provoca un error si la variable no ha estat definida prèviament.
// x no ha estat prèviament definida if (typeof x === 'undefined') { // s'evalua a true sense errors // sentències que s'executaran } if(x === undefined){ // llença ReferenceError }
De totes formes és recomanable evitar l'ús d'aquest tipus de tècniques. JavaScript és un llenguatge amb àmbits estàtics, de manera que per saber si una variable ha estat definida prèviament n'hi ha prou amb comprovar si ha estat definida dins l'àmbit immediat. L'única excepció és l'àmbit global. Aquest, però, està vinculat a l'objecte global, per la qual cosa comprovar si una variable existeix dins l'àmbit global és equivalent a comprovar l'existència d'una propietat dins l'objecte global (emprant l'operador in
, per exemple).
L'operador Void
i undefined
L'operador void
és una altra alternativa.
var x; if (x === void 0) { // sentències que s'executaran } // y no ha estat definida prèviament if (y === void 0) { // llença ReferenceError (en oposició a `typeof`) }
Especificacions
Especificació | Estat | Comentaris |
---|---|---|
ECMAScript 1st Edition. | Standard | Definició inicial. Impementat a JavaScript 1.3 |
ECMAScript 5.1 (ECMA-262) The definition of 'undefined' in that specification. |
Standard | |
ECMAScript 6 (ECMA-262) The definition of 'undefined' in that specification. |
Release Candidate |
Compatibilitat amb navegadors
Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Suport bàsic | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Característica | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Suport bàsic | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |