谷歌浏览器 - JavaScript版本

bra*_*rad 46 javascript firefox google-chrome

Google Chrome支持哪种版本的JavaScript与Mozilla Firefox相关?换句话说,Chrome是否支持Firefox 1.6,1.7或1.8,Firefox也支持它们或它们的某些组合?

Ben*_*bee 41

虽然Chrome会执行标记为"javascript1.7"的Javascript,但它不支持JS1.7功能,例如"let"范围变量运算符.

此代码将在Firefox 3.5上运行,但不能在使用V8的Chrome上运行:

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

如果您将语言更改为"javascript1.7"并省略该类型,则它将无法与Firefox 3.5中的JS 1.7功能一起运行.类型部分是必要的.

这似乎与一般的WebKit错误有关,https://bugs.webkit.org/show_bug.cgi?id = 23097 ; 可能是Chrome模拟Safari行为,即使它使用不同的引擎.

当被问及是否支持JS 1.8功能时,V8团队表示他们正在尝试跟踪Safari中使用的版本,因此页面在两种浏览器中的行为都相同.

  • 那个带let的人很烦人.我不得不使用嵌套的闭包:https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Working_with_Closures#Creating_closures_in_loops.3a_A_common_mistake (4认同)

Cas*_*ase 17

这个帖子仍然相关.截至2012年,Chrome支持大多数Javascript 1.6,不包括字符串和数组泛型.它不支持1.7.它支持reduce和reduceRight 1.8,1.8.1,Getters和setter以及本页列出的所有非特定版本的东西.此页面链接自Mozilla开发者网络,该网络指定了此处的javascript版本.


J c*_*J c 13

谷歌浏览器使用V8 javascript引擎,该引擎目前声称它实现了ECMA-262第3版.这意味着它至少支持1.5版本.

  • @skerit通过说"它实现",至少ECMA-262 v3中的所有功能都可用.他们可以自由添加其他功能,包括您提到的功能. (3认同)

Tob*_*obu 10

这里有一个简单的JavaScript 1.6功能的Chrome(和V8的用户,喜欢的Node.js)将不会运行:对每个在...

for each (variable in object)
  statement
Run Code Online (Sandbox Code Playgroud)

因为它是JS 1.5(每个J c的答案)是Chrome声称完全实现的唯一版本.

实际上,Chrome团队主要针对与Safari(当时最着名的Webkit用户)的兼容性,并且基于这些理由拒绝了功能.


Gre*_*reg 7

Google Chrome最多支持Javascript 1.7:

<script language="javascript1.7">alert(1.7);</script> - Alerts
<script language="javascript1.8">alert(1.8);</script> - Doesn't alert
Run Code Online (Sandbox Code Playgroud)

  • 格雷格,你的考试还不够.Chrome/V8将运行javascript1.7部分中的代码,但它实际上并未测试JS 1.7语言功能.Chrome/V8不支持这些功能. (11认同)
  • 这个答案是不正确的.虽然V8将在javascript1.7标记中运行代码,但它尚未包含任何1.7特定功能. (6认同)
  • @joel:太搞笑了.您有没有看过谷歌产品的测试版? (5认同)
  • 这听起来像是随着时间的推移会发生变化的事情 - 我们确定Chrome在离开测试版时不会支持1.8吗?但是要表明如何检查自己. (3认同)
  • 我将指出我当前版本的chrome仍然不支持Iterator或yield关键字之类的东西 (2认同)