JavaScript版本简要概述

谈及JavaScript版本时,可能与早几年浏览器大战时对于JavaScript的实现一样让人困惑。比如,可能会看到JavaScript 1.5, JavaScript 2.0, ECMAScript 3, JScript 5诸如此类的。

了解JavaScript版本的信息,看似毫无必要。但知己知彼百战不殆,了解JavaScript代码运行的环境所支持的版本,可以编写出更为高效的代码。《Effective JavaScript》第一条,Know which JavaScript you are using。

版本信息

在经过一番资料的检索后,我发现Wiki上ECMAScript词条下有一个JavaScript版本的对应图表很直观的说明各个版本称呼之间的关系(图表有缩减):

JavaScript JScript ECMAScript
1.0 (Netscape 2.0) 1.0 IE 3.0
1.3 (Netscape 4.06-4.7x) 3.0 (IE 4.0) Edition 1, Edition 2
1.5 (Netscape 6.0) 5.5 (IE 5.5) Edition 3
1.6 - 1.8 Edition 3 + extras
JavaScript 2.0 Harmony

JavaScript最初由Netscape推出,在其Netscape Navigator上使用,并一直使用”JavaScript X.X”的版本,后Mozilla沿用这种版本信息。
JScript是Microsoft在Netscape推出JavaScript不久后,在自家产品Internet Explorer上推出的脚本语言。为了避免商标授权问题,将其称为JScript。
之后,为了保证统一性,便产生了ECMAScript。ECMAScript目前有1、2、3、5、6,五个版本。ECMAScript 6预计在2014年年底发布。

值得一提的是,ECMAScript 4并未发布,被打回重审,最后被ECMAScript 6取代。关于这点可以在Wiki ECMAScript词条下的ECMAScript 4ECMAScript 6中看出端倪。

浏览器的实现情况

对于浏览器的支持情况,先看John Resig大神总结的博文。我将其中浏览器支持的情况整理成一个表格:

Product Supports JavaScript
IE 6-7 JScript5(= ECMAScript3, JavaScript 1.5)
IE 8 JScript6(= ECMAScript3, JavaScript 1.5) Bug fixes over JScript5
Firefox 1.0 JavaScript 1.5(= ECMAScript3)
Firefox 1.5 JavaScript 1.6 (1.5 + Array Extras + E4X + misc.)
Firefox 2.0 JavaScript 1.7 (1.6 + Generator + Iterators + let + misc.)
Firefox 3.0 JavaScript 1.8 (1.7 + Generator Expressions + Expression Closures + misc.)
Opera A language that is equivalent to ECMAScript 3 + Getters and Setters + misc.
Safari A language that is equivalent to ECMAScript 3 + Getters and Setters + misc.

浏览器更新日新月异,这份2008年的表格唯一能体现就是:ECMAScript 3在当前浏览器市场有广泛的支持。到这份日志写作时间,可以查到目前浏览器版本对JavaScript的支持情况为:

Product Version tested Test262 failed Test suite version (date)
Google Chrome 35.0.1916.114 m 11/11578 ES5.1 (2013-06-13)
Mozilla Firefox 29.0.1 48/11578 ES5.1 (2013-06-13)
Mozilla Firefox 24.5.0 ESR 75/11578 ES5.1 (2013-06-13)
Internet Explorer 11.0.8 (11.0.9600.17107) 7/11578 ES5.1 (2013-06-13)
Internet Explorer 10.0.16 (10.0.9200.16899) 8/11578 ES5.1 (2013-06-13)
Maxthon 4.4.0.4000 11/11578 ES5.1 (2013-06-13)
Opera 21.0.1432.67 11/11578 ES5.1 (2013-06-13)
Opera 12.17 / 12.16 11/11578 ES5.1 (2013-06-13)
Safari 7.0 (9537.71) 8/11578 ES5.1 (2013-06-13)

可以看到新版的浏览器绝大多数已经支持ECMAScript 5。关于浏览器对于ECMAScript 5的支持情况,特别是细化到各项feature,可以参考这份文档(以及ECMAScript 6的支持情况)。

对于不支持ECMAScript 5的浏览器(比如说IE 6/7)可以考虑使用ES5 Shim库来解决。

0%