Je lis le chapitre 4 «Javascript professionnel pour les développeurs Web» et il me dit que les cinq types de primitives sont: non défini, nul, booléen, nombre et chaîne.
Si null
est une primitive, pourquoi typeof(null)
revient-il "object"
?
Cela ne signifierait-il pas que ce processus null
est transmis par référence (je suppose ici que tous les objets sont transmis par référence), ce qui en fait PAS un primitif?
javascript
primitive
thetrystero
la source
la source
Réponses:
À partir de la page MDN sur le comportement de l'
typeof
opérateur :la source
Parce que la spécification le dit .
la source
typeof
ne vous dit pas si vous pouvez ou non appeler des méthodes sur quelque chose.null
etundefined
..
ou[ ]
).Comme cela a été souligné, la spécification le dit. Mais comme l'implémentation de JavaScript est antérieure à l'écriture de la spécification ECMAScript et que la spécification a pris soin de ne pas corriger les faiblesses de l'implémentation initiale, il y a encore une question légitime sur la raison pour laquelle cela a été fait de cette façon en premier lieu. Douglas Crockford appelle cela une erreur . Kiro Risk pense que c'est un peu logique :
la source
Extrait du livre YDKJS
la source
en bref: c'est un bogue dans ECMAScript, et le type devrait être
null
référence: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null
la source
En JavaScript, null est "rien". C'est censé être quelque chose qui n'existe pas. Malheureusement, en JavaScript, le type de données null est un objet. Vous pouvez considérer cela comme un bogue en JavaScript que typeof null est un objet. Elle devrait être nulle.
la source
En JavaScript, typeof null est 'object', ce qui suggère à tort que null est un objet. Il s'agit d'un bug qui ne peut malheureusement pas être corrigé, car il casserait le code existant.
la source
pour les personnes qui s'intéressent à du code qui a fait ce comportement c'est le lien pour vous guyz .... pourquoi typeof null est objet avec l'implimentation
la source