Ich lese die Dokumentation zu Symbol
s in JavaScript und teste auch in einigen Umgebungen (Chrome, Firefox, Node.js) und stelle fest, dass mein Verständnis der impliziten String-Konvertierung fehlerhaft ist.
Ich hatte immer den Eindruck, dass die Methode toString()
des Objekts aufgerufen wurde, als sie versuchte, in eine Zeichenkette zu konvertieren, und wenn diese Funktion kein primitiv zurückgab, dann rief sie die Methode toPrimitive()
des Objekts an hat nicht funktioniert es würde type-error. Diese Erläuterung deckt jedoch nicht die TypeError
, die Symbol
s throw:
Aber es ist offensichtlich, dass Symbol
s eine gültige Methode toString()
hat. Warum heißt es nicht?
Sie haben Recht, dass eine Methode "objects toString
" aufgerufen wird, wenn implizite Zeichenfolgenkonvertierungen durchgeführt werden. wie die Spezifikation angibt , implizite Zeichenfolgenkonvertierungen für Symbole verursachen jedoch ein TypeError
.
Als Dr. Axel Rauschmayer hat es gesagt :
Da sowohl Zeichenfolgen als auch Symbole Eigenschaftenschlüssel sein können, möchten Sie verhindern, dass Benutzer versehentlich ein Symbol in eine Zeichenfolge konvertieren.
Tags und Links javascript type-conversion ecmascript-6