Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.
undefined
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since julho de 2015.
Resumo
O valor globalundefined representa um valor indefinido. Trata-se de um dostipos primitivos do JavaScript.
Property attributes ofundefined | |
|---|---|
| Writable | no |
| Enumerable | no |
| Configurable | no |
In this article
Sintaxe
undefined
Descrição
Oundefined é uma propriedade do objetoglobal, ou seja, é uma variável no escopo global. O valor inicial deundefined é o valor primitivoundefined.
Nos browsers modernos (JavaScript 1.8.5 / Firefox 4+), a especificação ECMAScript 5 define que oundefined é uma propriedade não configurável e somente leitura. Mesmo quando esse não for o caso, evite sobrescrevê-lo.
Uma variável que não teve um valor atribuído é do tipoundefined. Um método ou sentença também retornaundefined se a variável que está sendo avaliada não tem um valor atribuído. Uma função retornaundefined se um valor não forretornado.
Uma vez que undefined não é umapalavra reservada, ele pode ser usado como umidentificador (nome de variável) em qualquer escopo que não seja o escopo global.
// escreve no console "foo string"(function () { var undefined = "foo"; console.log(undefined, typeof undefined);})();// escreve no console "foo string"(function (undefined) { console.log(undefined, typeof undefined);})("foo");Exemplos
>Igualdade estrita (===) eundefined
Voce pode utilizarundefined com os operadores de igualdade e desigualdade estritas para determinar se a variável possui um valor. No código a seguir, a variávelx não foi definida, e o resultado doif é verdadeiro.
var x;if (x === undefined) { // sentenças aqui são executadas} else { // o código aqui não é executado}Nota:O operador de igualdade estrita (===) tem que ser utilizado aqui uma vez quex == undefined também checa sex é nulo, enquanto o operador não o faz.null não é equivalente àundefined. Vejaoperadores de comparação (em inglês) para maiores detalhes.
Operador Typeof eundefined
Alternativamente,typeof pode ser usado:
var x;if (typeof x === "undefined") { // esse código é executado}Uma das principais razões para usar otypeof é que ele não lança erros caso a variável não tenha sido inicializada.
// x não foi atribuída anteriormenteif (typeof x === "undefined") { // retorna verdadeiro sem lançar erros // esse código executa}if (x === undefined) { // lança um ReferenceError para x}No entanto, esse tipo de técnica deveria ser evitada. A linguagem JavaScript é uma linguagem com escopo estático, portanto o conhecimento sobre se uma variável está definida pode ser adquirido pela verificação de sua definição dentro do contexto à qual ela pertence. A única exceção é para o escopo global. No entanto, o escopo global é anexado ao objeto global, portanto a verificação da existência de uma variável no contexto global pode ser feita através de uma checagem na propriedade do objeto global usando o operadorin, por exemplo.
Operador Void eundefined
O operadorvoid é a terceira alternativa.
var x;if (x === void 0) { // esse código executa}// y não foi definido antesif (y === void 0) { // lança uma ReferenceError (ao contrário de `typeof`)}Especificações
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-undefined> |