Czytam rozdział 4 „Profesjonalny Javascript dla programistów stron internetowych” i mówi mi, że pięć typów prymitywów to: niezdefiniowany, null, boolean, liczba i łańcuch.
Jeśli null
jest prymitywne, dlaczego typeof(null)
powraca "object"
?
Czy nie oznacza null
to, że jest przekazywany przez referencję (zakładam, że wszystkie obiekty są przekazywane przez referencję), a zatem czyniąc to NIE prymitywnym?
javascript
primitive
thetrystero
źródło
źródło
Odpowiedzi:
Ze strony MDN na temat zachowania
typeof
operatora :źródło
Ponieważ specyfikacja tak mówi .
źródło
typeof
mówi ci nic o tym, czy możesz wywoływać metody na czymś.null
iundefined
..
lub[ ]
).Jak już wspomniano, specyfikacja tak mówi. Ponieważ jednak implementacja JavaScriptu poprzedza napisanie specyfikacji ECMAScript, a specyfikacja uważała, aby nie poprawić błędów początkowej implementacji, nadal istnieje uzasadnione pytanie, dlaczego zostało to zrobione w ten sposób. Douglas Crockford nazywa to błędem . Kiro Risk uważa, że to trochę ma sens :
źródło
Z książki YDKJS
źródło
w skrócie: jest to błąd w ECMAScript, a typ powinien być
null
odniesienie: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null
źródło
W JavaScript null to „nic”. To ma być coś, co nie istnieje. Niestety, w JavaScript, typ danych null jest obiektem. Możesz uznać za błąd w JavaScript, że typeof null jest obiektem. Powinno być zerowe.
źródło
W JavaScript typof null to „obiekt”, co niepoprawnie sugeruje, że null jest obiektem. Jest to błąd, którego niestety nie można naprawić, ponieważ spowodowałby uszkodzenie istniejącego kodu.
źródło
dla ludzi, którzy są zainteresowani kodem, który spowodował takie zachowanie, ten link jest dla ciebie ... dlaczego typeof null jest obiektem z wszczepieniem
źródło