理解JavaScript使用语言中最棘手的部分的过程是很重要的。让我们从这一切开始。
为什么需要
JavaScript这样的语言?
许多年前,早在1995年,就有一个名为Netscape Navigator的浏览器(听起来已经是个故事了)。互联网连接非常缓慢,因为人们过去使用拨号连接使用电话线和调制解调器。因此,当您要在网站上填写表单时,通常使用Perl这样的语言进行编码,任何表单的输入字段的验证都需要往返到服务器。
这不仅是一个痛苦的练习,因为互联网的速度非常缓慢,而且还导致数据丢失,如果表格没有正确填写。Netscape Navigator试图通过找到一种方法来验证客户端本身的输入字段,从而将完整的输入字段保存到服务器上,从而解决这个问题。JavaScript就是这样诞生的,只是作为一种脚本语言在客户端验证表单。
为什么了解JavaScript的历史很重要
JavaScript作为一种脚本语言诞生了,用来验证输入,它已经走过了成为一种成熟的编程语言的旅程,它可以用来构建从移动应用程序、web应用程序到甚至桌面应用程序的任何东西。由于它的发展方式,我想说它是一种编程语言,它可能需要几个小时的时间才能开始,但需要多年的时间才能掌握。因此,当您开始学习JavaScript时,了解它的历史将有助于您更好地理解它的本质、优点和局限性。一旦了解JavaScript是如何演变成一种语言的,就更容易理解为什么会存在一些继承的问题,以及为什么有些事情会以某种方式发生变化。
JavaScript的诞生与冲突的产生
BrendanEich(当时是Netscape Navigator的开发人员)被指派开发这种新的脚本语言,然后命名为Mocha。这将作为Netscape Navigator 2的一部分发布。Mocha后来在Netscape Navigator 2发布之前被重命名为LiveScript。Netscape通信公司随后与Sun Microsystems结成联盟,后者当时正在大力推动Java的发展。
Just before the launch LiveScript was renamedasJavaScripttobank upon the traction that Java was gettingfromthe pressandportray JavaScriptasa natural extensionofJava.
因为Java对于处理服务器端任务来说太复杂了,太大了,LiveScript被看作是Java处理客户端任务的自然扩展。这应该是Java的一个伙伴,Java将处理繁重的服务器端任务,而LiveScript将使客户端验证变得容易。由于这些明显的原因,LiveScript继承了Java的许多语法和特性。Sun Microsystems帮助Netscape Navigator 2完成并发布了LiveScript,就在发布之前,它被重新命名为JavaScript,以利用Java从媒体获得的牵引力,并将JavaScript描述为Java的自然扩展。
冲突的演变与浏览器不兼容
JavaScript1.0是一个巨大的成功,互联网的采用也在大幅增加。因此JavaScript1.1与Netscape Navigator 3一起发布。到目前为止,Netscape Navigator已经成为市场上领先的浏览器。此时,微软决定在自己的浏览器InternetExplorer 3的开发中注入更多的资源。Netscape Navigator 3推出后不久,Microsft发布了一个新版本的Web浏览器,名为InternetExplorer 3,实现了JavaScript。为了避免Netscape Communications的任何许可问题,Microsft将Javascript的实现改名为JScript。
微软对JScript的这种采用和积极的实现将被证明是JavaScript的一个重大飞跃。因此,到目前为止,有两个不同版本的JavaScript漂浮在一起,没有标准化。这是我们今天看到的浏览器不兼容的开始。与C、C++、Java等所有其他编程语言不同,JavaScript没有任何基本标准。
向ECMA提交标准化文件
由于JavaScript没有标准,而且业界对此越来越担心,因此JavaScript1.1于1997年提交给欧洲计算机制造商协会(ECMA)进行标准化。成立了一个技术委员会,目的是标准化通用、跨平台和与供应商无关的脚本语言的语法和语义。该委员会由Sun Microsystems、Netscape Communications、Microsft和其他各种公司的开发人员组成。他们提出了ECMA-262标准,定义了一种新的脚本语言和一种叫做ECMAScript的通用脚本语言,所有浏览器都必须遵守ECMAScript来创建自己的JavaScript实现。不同的浏览器尝试采用ECMAScript作为JavaScript实现的标准,取得了不同程度的成功。在采用这一标准的整个过程中,既有成功的经历,也有失败的经历。
那么JavaScript和ECMAScript是一回事吗?
答案是不!虽然您经常会听到开发人员使用它们的同义词,但是它们之间有很大的不同。ECMAScript是一种基于ECMA-262中定义的标准的脚本语言,不与Web浏览器绑定。基于ECMAScript构建了一种更健壮的脚本语言,比如JavaScript。
JavaScript的实现
ECMAScript的JavaScript实现有三个区部分,统称为JavaScript。
核心-这是以ECMAScript为基础的。因此,ECMAScript定义了语法、数据类型、语句、运算符等。
文档对象模型(DOM)-浏览器呈现为向客户端或用户显示的节点层次结构。
浏览器对象模型(BOM)-这就是开发者可以操纵浏览器窗口的地方。使用BOM,开发人员可以访问浏览器特性,并在DOM上下文或正在呈现的页面之外对它们进行操作。
接下来是什么?
理解JavaScript的三种不同实现及其历史是很重要的,以了解它在一段时间内是如何影响到语言的。在本系列文章中,我们接下来将讨论ES6,这是2015年发布的ECMA-262的第六版,以及它如何被证明是JavaScript最重要的增强。