In einer Javascript-Funktion werden Sie verschachtelte Funktionen als Funktionsausdrücke definieren erforderlich oder in einer Funktionskörper Funktionsdeklarationen erlaubt? Zum Beispiel, würde so etwas konform sein?Verschachtelte Funktionen Javascript
function a() {
function b() {
function c() {
window.alert(3);
}
window.alert(2);
}
window.alert(1);
}
Oder müssten Sie so etwas tun?
function a() {
var a = function() {
var c = function() {
window.alert(3);
}
window.alert(2);
}
window.alert(1);
}
ECMA-262 sagt, dass:
Mehrere weit verbreitete Implementierungen von ECMAScript sind dafür bekannt, die Verwendung von FunctionDeclaration als Statement zu unterstützen. Es gibt jedoch signifikante und unüberbrückbare Variationen unter den Implementierungen in der Semantik, die auf solche Funktionsdeklarationen angewendet werden. Aufgrund dieser unversöhnlichen Unterschiede führt die Verwendung einer Funktionsdeklaration als Anweisung zu einem Code, der zwischen Implementierungen nicht zuverlässig portierbar ist. Es wird empfohlen, dass ECMAScript-Implementierungen diese Verwendung von FunctionDeclaration entweder verbieten oder eine Warnung ausgeben, wenn eine solche Verwendung auftritt. Zukünftige Ausgaben von ECMAScript können alternative tragbare Mittel zum Deklarieren von Funktionen in einem Anweisungskontext definieren.
Bedeutet dies, dass eine Funktionsdeklaration in einem Funktionskörper technisch falsch ist, oder habe ich das komplett falsch verstanden? Ich habe gehört, dass Leute den Körper als einen Block bezeichnen, der laut dem Standard eine oder mehrere Aussagen ist, aber ich bin mir nicht sicher.
Ich bin nicht sicher, was der Standard ist, scheint ein wenig verwirrend, aber ehrlich gesagt habe ich noch nie Verschachtelung Funktionsdeklarationen in IE8 + und allen anderen Browsern Probleme. – elclanrs