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?

TLDR

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

questionAnswers(4)

yourAnswerToTheQuestion