JavaScript indefinido substituído por null
In JavaScriptundefined
pode ser reatribuído, portanto, é recomendável criar uma função de execução automática que garanta que indefinido seja realmente indefinido. Como uma alternativanull
eundefined
são definitivamente==
, mas existem outros valores equivalentes anull/undefined
?
Basicamente, você pode substituir com segurança isso:
(function(undefined){
window.f = function(obj){
if(obj===undefined || obj===null ){
alert('value is undefined or null');
}
}
})();
com
window.f = function(obj){
if(obj==null){
alert('value is undefined or null');
}
}
Se o acima é 100% seguro, por que a comunidade / bibliotecas JavaScript não caiundefined
completamente e use o menorx == null
condicional para verificar os doisnull
/undefined
de uma vez só
EDITAR
Eu nunca vi alguém realmente representar um "valor desconhecido" com 'undefined' vsnull
? Eu nunca vi esse cenário e é por isso que originalmente fiz a pergunta. Apenas parece haver dois valores incrivelmente confusos que nunca são usados em sua intenção original. Padronizando tudo para fazer uma comparaçãoobj==null
seria benéfico para o tamanho e evitaria problemas com a reatribuição. Tudo continuaria a funcionar
var obj={};
obj.nonExistantProperty==null // true
var x;
ix==null // true
function(obj){
obj==null // true
}
A única exceção a essa regra parece ser quando o elencoundefined
/null
para um número inteiro. Este é um cenário bastante antigo, mas definitivamente deve ser observado.
+(null)==0
enquantoisNaN(+undefined)
Considerar NaN é o único valor em JavaScript que não é igual a si mesmo, você pode fazer algumas coisas bem loucas, como:
+undefined == +undefined // false
+null == +null // true
Usingnull
como uma igualdade solta==
substitua porundefined
é seguro, desde que você não planeje converter o valor em um número inteiro. Qual é um cenário bastante delicad