Nun, natürlich gibt es Implementierung Fehler, die schwerste, dass ich mit sind auf JScript, die Microsoft-Implementierung des Standards, zum Beispiel haben zu tun hatte:
Identifier von FunctionExpressions sollte nur zugänglich sein, der innere Umfang der Funktion selbst:
(function foo() {
alert(typeof foo); // "function"
})();
alert(typeof foo); // should be "undefined", on IE shows "function"
der Fehler auf allen aktuellen IE-Versionen vorhanden ist, hat es nur auf IE9 Previews behoben.
Und tatsächlich ist noch schlimmer, es schafft zwei Objekte Funktion, zum Beispiel:
var foo = function bar() {};
if (typeof bar != 'undefined') { // the case of IE
alert(foo === bar); // false!!!
}
Ein weiterer bekannter JScript Fehler ist die "DontEnum Bug", wenn ein Objekt in seinem Umfang Kette eine Eigenschaft enthält, die nicht abzählbar ist (hat das { DontEnum }
Attribut), wenn die Eigenschaft auf einem anderen Objekt abgeschattet wird, wird es als nicht-zählbare, zum Beispiel bleiben:
var dontEnumBug = {toString:'foo'}.propertyIsEnumerable('toString');
es wird bewerten, um false
auf IE, dies führt zu Problemen, wenn usin g die for-in
Anweisung, weil die Eigenschaften nicht besucht werden.
JScript ist die Implementierung, die die meisten Probleme hat - obwohl die IE9-Implementierung wirklich viel besser wird.
Empfohlene Artikel:
http://stackoverflow.com/questions/3663775/object-name-same-a-function-name/ Ihre Antwort auf diese Frage Frage würde eine nette Ergänzung dazu sein. Der FunctionStatement-Teil mindestens. –
Schöne Beispiele. Wenn Sie (oder jemand anderes) mehr Artikel haben, die die Unterschiede zwischen ecmascript 3-Implementierungen in Browsern hervorheben, senden Sie sie :) – AlfaTeK