Eu queria verificar se a variável está definida ou não. Por exemplo, o seguinte gera um erro não definido
alert( x );
Como posso pegar esse erro?
javascript
variables
undefined
Jineesh
fonte
fonte
Respostas:
Em JavaScript,
null
é um objeto. Há outro valor para coisas que não existemundefined
. O DOM retornanull
para quase todos os casos em que falha em encontrar alguma estrutura no documento, mas no próprio JavaScriptundefined
é o valor usado.Segundo, não, não há um equivalente direto. Se você realmente deseja procurar especificamente por
null
:Se você deseja verificar se existe uma variável, isso só pode ser feito com
try
/catch
, poistypeof
tratará uma variável não declarada e uma variável declarada com o valorundefined
equivalente.Mas, para verificar se uma variável é declarada e não é
undefined
:Anteriormente, era necessário usar o
typeof
operador para verificar indefinidamente com segurança, porque era possível reatribuirundefined
como uma variável. A maneira antiga era assim:O problema de
undefined
ser redesignável foi corrigido no ECMAScript 5, lançado em 2009. Agora você pode usar===
e!==
testar com segurançaundefined
sem usar,typeof
comoundefined
foi somente leitura por algum tempo.Se você deseja saber se um membro existe independente, mas não se importa com o seu valor:
Se você deseja saber se uma variável é verdadeira :
Fonte
fonte
typeof
operador (typeof null == 'object'
). Onull
valor é um valor primitivo , que é o único valor do tipo Nulo .A única maneira de testar verdadeiramente se uma variável é
undefined
é fazer o seguinte. Lembre-se, indefinido é um objeto em JavaScript.Algumas das outras soluções neste encadeamento farão com que você acredite que uma variável não está definida, mesmo que tenha sido definida (com um valor NULL ou 0, por exemplo).
fonte
ReferenceError
.undefined
é um objeto em javascript é desinformação. Esta declaração está relacionada à sua resposta, afinal? É um valorundefined
do tipoundefined
, atribuído ao identificador global nomeadoundefined
.undefined
é somente leitura desde ES5. Você pode testar com segurança para o uso indefinidoif (x === undefined) {...}
ou usando abreviada assim:if (x === void 0)
.Tecnicamente, a solução adequada é (acredito):
Às vezes, você pode ficar com preguiça e usar
mas isso permite que uma variável indefinida x e uma variável x contendo nulo retornem true.
fonte
var x;
e, em seguida,typeof x;
você receberá"undefined"
apenas como se você feztypeof lakjdflkdsjflsj;
Uma versão ainda mais fácil e abreviada seria:
OU
fonte
Eu já fiz muitas vezes:
fonte
Você também pode usar o operador condicional ternário:
fonte
var a = false;
? Você deve verificar se, ema===undefined
vez dissovar x;
fazendo acima irá lançar um erro!a
testará true paraundefined
, mas também testará true para0
enull
efalse
. Isso está muito incorreto e deve ser removido.Costumo usar a maneira mais simples:
EDITAR:
Sem inicializar a variável, a exceção será lançada "Uncaught ReferenceError: a variável não está definida ..."
fonte
Uncaught ReferenceError: variable is not defined
variable
é definido porvar variable;
. E esse trecho substituirávariable
no escopo local. Ele pode quebrar a lógica que espera acessar um fechamento ou variável global.var variable = 1; function test() { var variable; if (variable === undefined){ console.log('Variable is undefined'); } else { console.log('Variable is defined: ' + variable); } } test(); // Variable is undefined
Outra "solução" em potencial é usar o
window
objeto. Evita o problema do erro de referência quando em um navegador.fonte
undefined
. Isso não fará isso.O erro está dizendo que
x
isso nem existe! Não foi declarado , o que é diferente de ser atribuído um valor.Se você declarasse
x
, não receberia um erro. Você receberia um alerta que dizundefined
porquex
existe / tenha sido declarado, mas não foi atribuído um valor.Para verificar se a variável foi declarada, você pode usar
typeof
, qualquer outro método para verificar se existe uma variável, gera o mesmo erro que você obteve inicialmente.Isso está verificando o tipo do valor armazenado
x
. Ele retornará apenasundefined
quandox
não tiver sido declarado OU se tiver sido declarado e ainda não tiver sido atribuído.fonte
typeof
operador.O
void
operador retornaundefined
para qualquer argumento / expressão passado para ele. para que você possa testar o resultado (na verdade, alguns minifiers alteram seu código deundefined
paravoid 0
para salvar alguns caracteres)Por exemplo:
fonte
typeof
e pensandoundefined
pode ser transferido, o que não é possível há cerca de uma década.undefined
, pois Deus sabe apenas o motivo, o usovoid 0
sempre retornaráundefined
independentemente.Podemos verificar da
undefined
seguinte formafonte
Basta fazer algo como abaixo:
e chame assim:
fonte
A resposta aceita está correta. Só queria adicionar mais uma opção. Você também pode usar o
try ... catch
bloco para lidar com essa situação. Um exemplo esquisito:Esteja ciente do
catch
bloco, que é um pouco confuso, pois ele cria um escopo no nível do bloco. E, é claro, o exemplo é extremamente simplificado para responder à pergunta, não abrange as práticas recomendadas no tratamento de erros;).fonte
Uso uma função pequena para verificar se uma variável foi declarada, o que realmente reduz a quantidade de lixo nos meus arquivos javascript. Eu adiciono uma verificação do valor para garantir que a variável não exista apenas, mas também tenha sido atribuído um valor. A segunda condição verifica se a variável também foi instanciada, porque se a variável foi definida, mas não instanciada (veja o exemplo abaixo), ainda gerará um erro se você tentar fazer referência ao valor no seu código.
Não instanciado -
var my_variable;
Instanciado -var my_variable = "";
Você pode usar uma instrução condicional para testar se a variável foi definida e instanciada dessa maneira ...
ou para testar se não foi definido e instanciado o uso ...
fonte
return typeof el !== "undefined" && typeof el.val() !== "undefined"