Ich arbeite zum ersten Mal im strikten Modus und, was weiß ich schon, es ist auch das erste Mal, dass man in der Lage ist, eine nicht strikte Moduseigenschaft zu verwenden. Meine Frage hier skizziert das genaue Problem, das ich habe, aber die Lösung, die ich ausgearbeitet habe, könnte etwas viel mehr skalierbar angepasst werden, wenn ich noch Zugang zu arguments.callee hätte.
Ohne Angabe der Funktion gibt es im strikten Modus eine Möglichkeit, einen Verweis auf die Funktion zu erhalten, deren Bereich ich gerade betrete?
Ohne Angabe der Funktion gibt es im strikten Modus eine Möglichkeit, einen Verweis auf die Funktion zu erhalten, deren Bereich ich gerade betrete?
Nein. Du musst der Funktion einen Namen geben. Mein Fehler, ich dachte an einen Weg, siehe den letzten Code Block unten. Ich mag es nicht, aber da sind wir. : -)
Beachten Sie, dass Sie der Funktion hier einen Namen geben:
%Vor% ... verwendet einen benannten Funktionsausdruck . Diese sind notorisch unzuverlässig ( Link , link ) über Implementierungen (sie sollten nicht sein, aber sind), vor allem in Ihrem Beispiel oben, IE8 und früher wird zwei Vollständig getrennte Funktionsobjekte, wobei eines der Objekte der Eigenschaft generateScale
zugewiesen wird und auf ein anderes Funktionsobjekt innerhalb der Funktion als GS
verwiesen wird.
Es ist jedoch leicht zu beheben:
%Vor%Oder wenn Sie wirklich nicht möchten, dass die Funktion einen Namen hat (ich bevorzuge, dass sie Namen haben, hilft meinen Tools helfen , aber hey), Sie können eine lokale innerhalb dieser Schließung verwenden:
%Vor% Sie haben jetzt eine anonyme Funktion, können aber in GS
darauf verweisen. Noch einmal, ich würde es nicht empfehlen, denn dann können Sie den Funktionsnamen in Aufruflisten und dergleichen nicht sehen, aber Sie haben gesagt, ohne der Funktion einen Namen zu geben , also ...
Tags und Links javascript scope function strict