2008-11-18 28 views
45

Welche JavaScript-Version unterstützt Google Chrome in Bezug auf Mozilla Firefox? Mit anderen Worten: Unterstützt Chrome JavaScript 1.6, 1.7 oder 1.8, das Firefox auch unterstützt oder eine Kombination davon?Google Chrome - JavaScript-Version

+0

Als eine Seitenleiste ist das Sprachattribut des Skript-Tags seit der html 4-Spezifikation veraltet, es wird stattdessen empfohlen, das type-Attribut zu verwenden. – seanb

+0

Das ist wirklich seltsam, mein Plugin hat Probleme mit Chrome, funktioniert aber perfekt auf anderen Browsern. 'onclick()' funktioniert nicht in 'select-box'. Ich habe 'onchange()', 'onblur()', 'onfocus()' versucht, funktioniert aber immer noch nicht in Chrome. – Frank

Antwort

41

Während Chrome Javascript ausgeführt wird, das als "javascript1.7" gekennzeichnet ist, unterstützt es keine JS1.7-Funktionen wie den Variablenoperator "let".

mit V8 Dieser Code wird auf Firefox 3.5, aber nicht auf Chrome laufen:

<script language="javascript" type="application/javascript;version=1.7"> 
    function foo(){ let a = 4; alert(a); }; foo(); 
</script> 

Wenn Sie die Sprache auf „javascript1.7“ und lassen Sie die Art ändern, wird es nicht mit JS 1.7 Funktionen laufen in Firefox 3.5. Der Typabschnitt ist notwendig.

Dies scheint mit einem allgemeinen WebKit-Bug, https://bugs.webkit.org/show_bug.cgi?id=23097; Es kann sein, dass Chrome das Safari-Verhalten emuliert, obwohl es eine andere Engine verwendet.

When asked about supporting JS 1.8 features, das V8-Team sagte, dass sie versuchten, die in Safari verwendete Version zu verfolgen, so dass Seiten in beiden Browsern gleich funktionieren würden.

+4

Das mit Let ist nervig. Ich bin gezwungen, verschachtelte Closures zu verwenden: https://developer.mozilla.org/de/Core_JavaScript_1.5_Guide/Working_with_Closures#Creating_closures_in_loops.3a_A_common_mistake – Tobu

5

Google Chrome unterstützt bis zu Javascript 1.7:

<script language="javascript1.7">alert(1.7);</script> - Alerts 
<script language="javascript1.8">alert(1.8);</script> - Doesn't alert 
+2

Das klingt nach der Art von Dingen, die sich im Laufe der Zeit ändern werden - sind wir sicher, dass Chrome 1.8 nicht unterstützt, wenn es die Betaversion verlässt? Aber upvote für das Zeigen, wie man für selbst überprüft. –

+0

Ich bin mir sicher, es wird es * schließlich * unterstützen, aber ich habe kein Insiderwissen ... möglicherweise sind einige Google-Mitarbeiter SO-Fans und könnten uns aufklären. – Greg

+5

@joel: Das ist zu lustig. Hast du jemals ein Google-Produkt gesehen, das Beta verlassen hat? – NotMe

12

Google Chrome die V8 javascript engine verwendet, die zur Zeit heißt es, dass es implementiert ECMA-262, 3. Auflage. Dies würde bedeuten, dass es mindestens Version 1.5 unterstützt.

+0

Seltsam. Ich dachte, dass der Iterator "for (var i in objects)" etwas ist, was nicht in der dritten Ausgabe ist, aber in Chrome und Safari funktioniert es gut. – skerit

+3

@Skerit mit der Aussage "es implementiert", mindestens alle Funktionen in ECMA-262 v3 ist verfügbar. Es steht ihnen frei, weitere Funktionen hinzuzufügen, einschließlich der von Ihnen erwähnten. – syockit

10

Hier ist ein einfaches Javascript 1.6 Feature Chrome (und V8-Nutzer, wie node.js) werden nicht ausgeführt: for each … in

for each (variable in object) 
    statement 

Wie JS 1.5 (pro Jc Antwort) ist die einzige Version Chrome Ansprüche vollständig umzusetzen.

In der Tat hat das Chrome-Team in erster Linie die Kompatibilität mit Safari angestrebt (zu dieser Zeit der prominenteste Webkit-Benutzer) und Funktionen aus diesem Grund abgelehnt.

+0

Sehr guter Punkt. – CDR

+1

In Chrome 16.0 nicht unterstützt. Eine Stunde vergesslich, warum Code nicht funktioniert ... – SabreWolfy

+0

Sie verwenden forEach nicht korrekt. Überprüfen Sie die Syntax hier: http://robertnyman.com/javascript/javascript-1.6.html – Case

4

Dies ist ein alter Thread, aber hier geht. Google Chrome reagiert nicht auf die folgenden

function foo(){ 
    let a = 4; 
    alert(a); 
} 
foo(); 

daher nicht unterstützt wird JavaScript 1.7

+0

gibt es ein paar andere Dinge, die ich hatte Probleme mit Javascript 1.7 auf Chrom, wie auch Zugriff auf globale Variablen und so – user151496

17

Dieser Thread ist immer noch relevant. Ab 2012 unterstützt Chrome die meisten von Javascript 1.6, ohne String- und Array-Generics. Es unterstützt keine von 1.7. Es unterstützt reduce und reduceRight von 1,8, alle von 1.8.1, und Getters und Setter und alle nicht versionspezifischen Dinge, die unter this page aufgelistet sind. Diese Seite ist verlinkt vom Mozilla Developer Network, welches die Versionen von javascript angibt, gefunden here.