Estou lendo o capítulo 4 'Javascript profissional para desenvolvedores da Web' e ele diz que os cinco tipos de primitivas são: indefinido, nulo, booleano, número e sequência.
Se null
é um primitivo, por que typeof(null)
retorna "object"
?
Isso não significa que isso null
é passado por referência (suponho que todos os objetos sejam passados por referência), tornando-o NÃO um primitivo?
javascript
primitive
thetrystero
fonte
fonte
Respostas:
Na página MDN sobre o comportamento do
typeof
operador :fonte
Porque as especificações dizem isso .
fonte
typeof
diz nada sobre se você pode ou não chamar métodos em alguma coisa.null
eundefined
..
ou[ ]
).Como foi apontado, a especificação diz isso. Mas como a implementação do JavaScript é anterior à gravação da especificação do ECMAScript, e a especificação teve o cuidado de não corrigir os pontos fracos da implementação inicial, ainda há uma pergunta legítima sobre por que isso foi feito dessa maneira em primeiro lugar. Douglas Crockford chama isso de um erro . Kiro Risk acha que meio que faz sentido :
fonte
Do livro YDKJS
fonte
em resumo: é um bug no ECMAScript, e o tipo deve ser
null
referência: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null
fonte
No JavaScript nulo é "nada". É suposto ser algo que não existe. Infelizmente, em JavaScript, o tipo de dados null é um objeto. Você pode considerar um erro no JavaScript que typeof null é um objeto. Deve ser nulo.
fonte
No JavaScript, typeof null é 'object', o que sugere incorretamente que null é um objeto. Este é um erro que infelizmente não pode ser corrigido, porque quebraria o código existente.
fonte
para pessoas que estão interessadas em algum código que fez esse comportamento, este é o link para você, cara .... por que typeof null é objeto da implementação
fonte