Die Funktion wird nicht überschrieben, sie weist dieser Variablen jedoch eine Zeichenfolge zu. Die in der ersten Zeile definierte Funktion gibt eine Zeichenkette zurück, und da die zweite Zeile spam
gleich dem Rückgabewert setzt (da die Funktion aufgerufen wird (beachten Sie die Klammern)) ist spam dann eine string.
Versuchen Sie dies in der Browser-Konsole: window.spam
. Nach der ersten Zeile sollte diese Funktion sichtbar sein. Dann sollte nach der zweiten Zeile diese Zeichenfolge angezeigt werden.
function spam() {
return "spam 'n eggs";
}
console.log('typeof spam: ',typeof spam, 'typeof window.spam: ',typeof window.spam);
spam = spam(); //spam is assigned a string
console.log('typeof spam: ',typeof spam, 'typeof window.spam: ',typeof window.spam);
spam(); // TypeError: spam is not a function.
wenn wir diesen Code in einer Funktion bewegt, das var Schlüsselwort könnte für einen lokalen Gültigkeitsbereich verwendet werden:
function assignSpam() {
var spam = function() { return "spam 'n eggs"; }
console.log('typeof spam after initial assignment: ',typeof spam);
spam = spam(); //spam is assigned a string
console.log('typeof spam after assigning to spam(): ',typeof spam);
spam(); // TypeError: spam is not a function.
}
assignSpam();
spam; //undefined
Die Ergebnisse sollten in ähnlich sein serverseitiges Javascript (zB NodeJS).
Dies war nicht ganz das, was ich mit überschreiben meinte (siehe Bearbeiten), aber beantwortet meine Frage dennoch. – JeremiahB