javascript自1995年诞生以来已过去了16个年头,如今全世界无数的网页在依靠她完成各种关键任务,javascript曾在tiobe发布的编程语言排行榜中排到了第8名,紧随c#,javascript从过去装饰性的一种脚本语言转变为主流的编程语言,人们用它来开发更大更复杂的程序,这就需要web开发人员更深入的了解javascript,了解它的过去、现在和未来。
javascript历史简述
大概在1992年,一家称作nombas的公司开始开发一种叫做c减减(c-minus-minus,简称cmm)的嵌入式脚本语言。这个脚本语言捆绑在一个叫做cenvi的共享软件产品中,当netscape navigator崭露头角时,nombas开发了一个可以嵌入网页中的cenvi的版本。这些早期的试验称为espresso page(浓咖啡般的页面),它们代表了第一个在万维网上使用的客户端脚本语言。而nombas丝毫没有料到它的理念将会成为因特网的一块重要基石。
当网上冲浪越来越流行时,对于开发客户端脚本的需求也逐渐增大。当时工作于netscape的brendan eich,开始着手为即将在1995年发行的netscape navigator 2.0开发一个称之为livescript的脚本语言,当时的目的是同时在浏览器和服务器端使用它。netscape与sun公司联手及时完成livescript实现。就在netscape navigator 2.0即将正式发布前,netscape将其更名为javascript,目的是为了利用java这个因特网时髦词汇。netspace的赌注最终得到回报,javascript从此变成了因特网的必备组件。
ecmascript标准
因为javascript 1.0如此成功,netscape在netscape navigator 3.0中发布了1.1版。恰巧那个时候,微软决定进军浏览器,发布了ie 3.0 并搭载了一个javascript的克隆版,叫做jscript(这样命名是为了避免与netscape潜在的许可纠纷)。微软步入web浏览器领域的这重要一步虽然令其声名狼藉,但也成为javascript语言发展过程中的重要一步。
在微软进入后,有3种不同的javascript版本同时存在:netscape navigator 3.0中的javascript、ie中的jscript以及cenvi中的scriptease。与c和其他编程语言不同的是,javascript并没有一个标准来统一其语法或特性,而这3种不同的版本恰恰突出了这个问题。随着业界担心的增加,这个语言标准化显然已经势在必行。1997年,javascript 1.1作为一个草案提交给欧洲计算机制造商协会(ecma),由来自netscape、sun、微软、borland和其他一些对脚本编程感兴趣的公司的程序员组成的tc39锤炼出了ecma-262,该标准定义了叫做ecmascript的全新脚本语言。从此,web浏览器就开始努力(虽然有着不同程度的成功和失败)将ecmascript作为javascript实现的基础。
尽管ecmascript是一个重要的标准,但它并不是javascript唯一的部分,当然,也不是唯一被标准化的部分。实际上,一个完整的javascript实现是由以下3个不同部分组成的
•核心(ecmascript)——javascript的核心ecmascript描述了该语言的语法和基本对象
•文档对象模型(dom)——dom描述了处理网页内容的方法和接口
•浏览器对象模型(bom)——bom描述了与浏览器进行交互的方法和接口
javascript版本历史
由于历史原因及技术的不断发展,javascript版本众多,各种浏览器的实现情况也不一样,笔者根据各方面的信息整理了一下javascript的各个版本及对应浏览器的实现情况,这也是这篇文章的主要目的,欢迎大家提供意见,一起完善。
版本 发布日期 基于 netscape navigator mozilla firefox internet explorer opera safari chrome
1.0 1996年3月
2.0
3.0 (jscript 1.0)(1996年8月)
1.1 1996年8月
3.0
3.0 (jscript 2.0)(1997年1月)
1.2 1997年6月
4.0-4.05
1.3 1998年10月 ecma-262 第一版 (1997年6月发布)/ ecma-262 第二版 (1998年6月发布) 4.06-4.7x
4.0 (jscript 3.0)(1997年10月)
1.4
netscape server only
jscript 4.0 (visual studio 6, no ie release)
5.0 (jscript 5.0)(1999年3月)
1.5 2000年11月 ecma-262 第三版 (1999年12月发布) 6.0 1.0 5.5 (jscript 5.5)(2000年7月)
6 (jscript 5.6)(2001年10月)
7 (jscript 5.7)(2006年10月)
8 (jscript 5.8)(2009年3月)
1.6 2005年11月 1.5 + array extras + array and string generics + e4x
1.5
3.0, 3.1
1.7 2006年10月 1.6 + pythonic generators + iterators + let
2.0
3.2, 4.0 1.0
1.8 2008年6月 1.7 + generator expressions + expression closures
3.0
1.8.1 2009年6月
1.8 + native json support + minor updates
3.5
1.8.5 2010年7月
1.8.1 + ecmascript 5 compliance
4 9
2.0 制定中
ecmascript harmony
特别说明:
1.当netscape 将它的源代码作为mozilla 项目公布于众时,本来计划javascript 1.4 将会嵌入到netscape navigator 5.0 中。然而,一个冒进的决定——要完全从头重新设计netscape 的代码,破坏了这个工作。 javascript 1.4 仅仅作为一个netscape enterprise server 的服务器端脚本语言发布,以后也没有被放入浏览器中。
2.e4x(ecmascript for xml)是一种在ecmascript(见ecma-262,包括actionscript、javascript等语言实现)标准的基础上加入的动态xml支持的程序语言扩展。e4x的目的是作为dom接口之外的另一个选择。它可以使程序员在ecmascript脚本中通过更简洁的语法来访问xml文档。同时,它也为实现脚本中xml可视化提供了一种新方法。
3.从 ie 5.5 版本发布开始,微软就没有更新过它基于浏览器的javascript实现策略,但在.net framework 中包含了jscript.net作为ecmascript 4的实现,其中添加了一些特定于微软的功能,它不能作为客户端脚本语言在ie中使用,只能用在asp.net中作为服务器端语言或者独立应用程序来用。与其它的javascript版本不同,jsscript.net是编译型语言,可以独立的可执行文件。
4.ecmascript harmony其实是包含javascript 2.0在内的ecmascript第四版的一个临时新命名(未来可能是ecmascript第六版?),ecmascript第五版则是独立开发的ecmascript 3.1语言的后期命名。
5.如今,所有的主流 web 浏览器都遵守 ecma-262 第三版,即实现的是javascript 1.5版,javascript 1.6-1.9只是ecmascript (javascript on gecko)升级至javascript 2.0的临时代号。
检测javascript版本
点击测试按钮可以测试你当前浏览器支持的javascrpt版本,在ie8中测试,提示说支持的版本是1.3,奇怪?
determine javascript version
[ctrl+a 全选 注:如需引入外部js需刷新才能执行]
参考内容:
1.javascript高级程序设计
2.http://en.wikipedia.org/wiki/javascript#history 3.http://en.wikipedia.org/wiki/ecmascript#version_correspondence
4.http://ejohn.org/blog/versions-of-javascript/
5.https://developer.mozilla.org/en/javascript/guide/javascript_overview
作者:梦想
出处:http://www.cnblogs.com/lhb25