JavaScript 是目前Web 应用程序开发者使用最为广泛的客户端脚本编程语言,它不仅可
用来开发交互式的Web 页面,更重要的是它将HTML、XML 和Java applet、flash 等功能强
大的Web 对象有机结合起来,使开发人员能快捷生成Internet 或Intranet 上使用的分布式应
用程序。另外由于Windows 对其最为完善的支持并提供二次开发的接口来访问操作系统各
组件并实施相应的管理功能,JavaScript 成为继.bat(批处理文件)以来Windows 系统里使用最
为广泛的脚本语言。
1.1 JavaScript 是什么
应用程序开发者在学习一门新语言之前,兴趣肯定聚焦在诸如“它是什么”、“它能做什
么”等问题而不是“如何开发”等问题上面。同样,学习JavaScript 脚本,首先来揭开JavaScript
脚本的面纱:“JavaScript 是什么?”
1.1.1 JavaScript 简史
二十世纪90 年代中期,大部分因特网用户使用28.8kbit/s 的Modem 连接到网络进行网
上冲浪,为解决网页功能简单的问题,HTML 文档已经变得越来越复杂和庞大,更让用户
痛苦的是,为验证一个表单的有效性,客户端必须与服务器端进行多次的数据交互。难以想
象这样的情景:当用户填完表单单击鼠标提交后,经过漫长的几十秒等待,服务器端返回的
不是“提交成功”的喜悦却是“某某字段必须为阿拉伯数字,请单击按钮返回上一页面重新
填写表单!”的错误提示!当时业界已经开始考虑开发一种客户端脚本语言来处理诸如验证
表单合法性等简单而实用的问题。
1995 年Netscape 公司和Sun 公司联合开发出JavaScript 脚本语言,并在其Netscape
Navigator 2 中实现了JavaScript 脚本规范的第一个版本即JavaScript 1.0 版,不久就显示了其
强大的生机和发展潜力。由于当时Netscape Navigator 主宰着Web 浏览器市场,而Microsoft
的IE 则扮演追赶者的角色,为了跟上Netscape 步伐,Microsoft 在其Internet Explorer 3 中以
JScript 为名发布了一个JavaScript 的克隆版本JScript 1.0。
1997 年,为了避免无序竞争,同时解决JavaScript 几个版本语法、特性等方面的混乱,
JavaScript 1.1 作为草案提交给ECMA(欧洲计算机厂商协会),并由Netscape、Sun、Microsoft、
Borland 及其它一些对脚本语言比较感兴趣的公司组成的TC39(第39 技术委员会:以下简
称TC39)协商并推出了ECMA-262 规范版本,其定义了以JavaScript 为蓝本、全新的
ECMAScript 脚本语言。
ECMA-262 标准Edition 1 删除了JavaScript 1.1 中与浏览器相关的部分,同时要求对象
是平台无关的并且支持Unicode 标准。
在接下来的几年,ISO/IEC(估计标准化组织/国际电工委员会)采纳ECMAScript 作为
Web 脚本语言标准(ISO/IEC-16262)。从此,ECMAScript 作为JavaScript 脚本的基础开始
得到越来越多的浏览器厂商在不同程度上支持。
为了与ISO/IEC-16262 标准严格一致,ECMA-262 标准发布Edition2,此版本并没有添加、
更改和删除内容。ECMA-262 标准Edition 3 提供了对字符串处理、错误定义和数值输出等方
面的更新,同时增加了对try…catch异常处理、正则表达式、新的控制语句等方面的完美支
持,它标志着ECMAScript成为一门真正的编程语言,以ECMAScript为核心的JavaScript脚本
语言得到了迅猛的发展。ECMA-262 标准Edition 4 正在制定过程中,可能明确的类的定义方
法和命名空间等概念。表1.1 是ECMA-262 标准四个版本之间的异同及浏览器支持情况。
表 1.1 ECMA-262 标准各版本间异同及浏览器支持情况
ECMA版本特性 浏览器支持
Edition 1 删除了JavaScript 1.1中与浏览器相关的部分,同时
要求对象是平台无关的并且支持Unicode标准
Netscape Navigators 4(.06版)、
Internet Explorer 5
Edition 2 提供与ISO/IEC-16262标准的严格一致Opera 6.0-7.1
Edition 3 提供了对字符串处理、错误定义和数值输出等方面
的更新,同时增加了对try…catch异常处理、正则表
达式、新的控制语句等方面的完美支持
Internet Explorer 5.5+、Netscape
Navigators 6.0+、Opera 7.2+、
Safari 1.0+
Edition 4* 可能明确的类的定义方法和命名空间等概念未知(此版本正在制订过程中)
1999 年6 月ECMA 发布ECMA-290 标准,其主要添加用ECMAScript 来开发可复用组
件的内容。
2005 年12 月ECMA 发布ECMA-357 标准(ISO/IEC 22537)出台,主要增加对扩展标
记语言XML 的有效支持。
注意:JavaScript 脚本也能进行服务器端应用程序的开发,但相对于客户端的功能和应用范围而言,一般
仍将其作为一门客户端脚本语言对待,后面有专门章节讲述服务器端JavaScript 脚本。
对 JavaScript 历史的了解有助于开发者迅速掌握这门语言,同时也能加深对JavaScript
语言潜力的理解。下面介绍其语言特点。
1.1.2 JavaScript 有何特点
JavaScript 是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言,主要用于
创建具有交互性较强的动态页面。主要具有如下特点:
基于对象:JavaScript 是基于对象的脚本编程语言,能通过DOM(文档结构模型)
及自身提供的对象及操作方法来实现所需的功能。
事件驱动:JavaScript 采用事件驱动方式,能响应键盘事件、鼠标事件及浏览器窗
口事件等,并执行指定的操作。
解释性语言:JavaScript 是一种解释性脚本语言,无需专门编译器编译,而是在嵌
入JavaScript 脚本的HTML 文档载入时被浏览器逐行地解释,大量节省客户端与服
务器端进行数据交互的时间。
实时性:JavaScript 事件处理是实时的,无须经服务器就可以直接对客户端的事件
做出响应,并用处理结果实时更新目标页面。
动态性:JavaScript 提供简单高效的语言流程,灵活处理对象的各种方法和属性,
同时及时响应文档页面事件,实现页面的交互性和动态性。
跨平台:JavaScript 脚本的正确运行依赖于浏览器,而与具体的操作系统无关。只
要客户端装有支持JavaScript 脚本的浏览器,JavaScript 脚本运行结果就能正确反
映在客户端浏览器平台上。
开发使用简单:JavaScript 基本结构类似C 语言,采用小程序段的方式编程,并提
供了简易的开发平台和便捷的开发流程,就可以嵌入到HTML 文档中供浏览器解
释执行。同时JavaScript 的变量类型是弱类型,使用不严格。
相对安全性:JavaScript 是客户端脚本,通过浏览器解释执行。它不允许访问本地
的硬盘,并且不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只
能通过浏览器实现信息浏览或动态交互,从而有效地防止数据的丢失。
综上所述,JavaScript 是一种有较强生命力和发展潜力的脚本描述语言,它可以被直接
嵌入到HTML 文档中,供浏览器解释执行,直接响应客户端事件如验证数据表单合法性,
并调用相应的处理方法,迅速返回处理结果并更新页面,实现Web 交互性和动态的要求,
同时将大部分的工作交给客户端处理,将Web 服务器的资源消耗降到最低。
注意:之所以说相对安全性,是因为JavaScript 代码嵌入到HTML 页面中,在客户端浏览该页面过程中,
浏览器自动解释执行该代码,且不需要用户的任何操作,给用户带来额外的执行恶意代码的风险。