Ich lese Kapitel 4 "Professionelles Javascript für Webentwickler" und erfahre, dass die fünf Arten von Grundelementen undefiniert, null, boolesch, Zahl und Zeichenfolge sind.
Wenn null
es ein Primitiv ist, warum kehrt es typeof(null)
zurück "object"
?
Würde das nicht bedeuten, dass dies null
als Referenz übergeben wird (ich gehe hier davon aus, dass alle Objekte als Referenz übergeben werden), was es NICHT zu einem Grundelement macht?
javascript
primitive
Thetrystero
quelle
quelle
Antworten:
Auf der MDN-Seite zum Verhalten des
typeof
Bedieners :quelle
Weil die Spezifikation es sagt .
quelle
typeof
sagt Ihnen nichts darüber, ob Sie Methoden für etwas aufrufen können oder nicht.null
und aufrufenundefined
..
oder[ ]
).Wie bereits erwähnt, heißt es in der Spezifikation. Da die Implementierung von JavaScript jedoch vor dem Schreiben der ECMAScript-Spezifikation erfolgte und die Spezifikation darauf geachtet hat, die Schwächen der ursprünglichen Implementierung nicht zu korrigieren, gibt es immer noch eine berechtigte Frage, warum dies überhaupt so gemacht wurde. Douglas Crockford nennt es einen Fehler . Kiro Risk findet das irgendwie sinnvoll :
quelle
Aus dem Buch YDKJS
quelle
Kurz gesagt: Es ist ein Fehler in ECMAScript, und der Typ sollte sein
null
Referenz: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null
quelle
In JavaScript ist null "nichts". Es soll etwas sein, das es nicht gibt. Leider ist in JavaScript der Datentyp null ein Objekt. Sie können es als Fehler in JavaScript betrachten, dass der Typ null ein Objekt ist. Es sollte null sein.
quelle
In JavaScript ist der Typ null 'Objekt', was fälschlicherweise darauf hindeutet, dass null ein Objekt ist. Dies ist ein Fehler, der leider nicht behoben werden kann, da er den vorhandenen Code beschädigen würde.
quelle
Für Leute, die an einem Code interessiert sind, der dieses Verhalten verursacht hat, ist dies der Link für Sie. Warum ist typeof null ein Objekt mit der Implementierung?
quelle