15 Stimmen

Wann wird ECMAScript 5 in v8 implementiert?

Ich habe festgestellt, dass v8 ist in Bezug auf die ECMAScript 5th Edition eher stumm.

V8 implementiert ECMAScript gemäß ECMA-262, 3. Auflage, und läuft auf Windows XP und Vista, Mac OS X 10.5 (Leopard) und Linux-Systemen, die IA-32- oder ARM-Prozessoren verwenden.

Sogar der Bugtracker scheint ruhig zu sein...

Auf ein Fehler finden Sie ein Macher dies zu schreiben:

V8 ist eine Implementierung von ECMAScript, nicht von JavaScript. Letzteres ist eine nicht standardisierte Erweiterung von ECMAScript, die von Mozilla entwickelt wurde. V8 soll mit JSC, der ECMAScript-Implementierung in WebKit/Safari, Plug-in-kompatibel sein. Als solches implementiert es eine Reihe von nicht standardisierten Erweiterungen von ECMAScript, die auch in JSC enthalten sind, und die meisten davon sind auch in Mozillas JavaScript-Sprachen enthalten. Es ist nicht geplant, nicht standardisierte Funktionen, die nicht in JSC enthalten sind, zu V8 hinzuzufügen.

Interessanterweise schrieb er das am 8. Oktober 2010, als ECMAScript 5 im Dezember 2009 veröffentlicht wurde, und zwei Monate zuvor wurde Javascript 1.8.5 - eine Obermenge von ECMAScript 5 - freigegeben.

Es bleibt also die Frage, wann Google v8 aktualisieren wird, damit es auf ECMAScript 5th Edition läuft? Gibt es überhaupt einen Plan für ein Upgrade auf die neueste Standardisierung von ECMAScript?

0 Stimmen

Nur weil ich keine Haltung finden kann, heißt das nicht, dass Sie es nicht können. Oder, dass ein Entwickler es nicht weiß.

4 Stimmen

@Matt Ball P.S. Wenn Sie die Frage nicht mögen - bewerten Sie sie herunter. Aber kennzeichnen Sie sie nicht als "keine richtige Frage", nur weil Sie sie nicht mögen. Das ist ein Missbrauch des Systems. Die Frage ist durchaus real, nicht vage und leicht und objektiv zu beantworten: "Wann wird v8 ECMAScript 5 implementieren?".

1 Stimmen

Und wenn der V8 Team nicht die Antwort hat?

27voto

kangax Punkte 38303

ECMAScript 5 wurde eigentlich so konzipiert, dass Implementierungen müssen nicht "auf den neuesten Stand gebracht" werden .

Es gibt nur wenige Änderungen im bestehenden Verhalten, aber hauptsächlich fügt ES5 neue native Objekte hinzu (z. B. Object.create , Array.prototype.map , String.prototype.trim usw.) und standardisiert einige der bestehenden De-facto-Funktionen (von den allgegenwärtigen "Zeilenabschlüssen in String-Literalen", "Eigenschaftszugriff auf Strings" und "indirektes Eval-Verhalten" bis hin zu weniger populären "Accessoren" und Array-/String-Erweiterungen).

Die größte Änderung im Verhalten - der Strict-Modus - wurde aus demselben Grund eingeführt: um den Übergang von ES3 zu ES5 weniger schmerzhaft zu gestalten.

Dies vorausgeschickt, V8 implementiert ein beachtlicher Teil der ES5-Funktionen, einschließlich Strict Mode (eine der jüngsten Ergänzungen).

Wenn Sie sich meine ES5-kompatible Tabelle können Sie sehen, ES5-Funktionen in Chrome implementiert - die eng (und ich würde denken - vollständig) korrelieren sollte, um V8.

Sie können auch sehen, dass die Unterstützung für den Strict-Modus weitgehend in Chrome implementiert was bedeutet, dass sie auch in V8 enthalten sein sollte. Um zu überprüfen, führte ich gerade diesen Code in der Konsole (v8 v3.2.3.1) und bekam SyntaxError wie erwartet:

> (function(){"use strict"; with({x:1}) return x})()
(shell):1: SyntaxError: Strict mode code may not include a with statement
(function(){"use strict"; with({x:1}) return x})()
                          ^^^^

Da haben Sie es also. V8 implementiert definitiv Mehrheit der ES5-Funktionen , einschließlich des strengen Modus ;)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X