第一篇 JavaScript入门篇
第1章 JavaScript语言概述
1.1 JavaScript是什么
应用程序开发者在学习一门新语言之前,兴趣肯定聚焦在诸如“它是什么”、“它能做什么”等问题上,而不是“如何开发”等问题。同样,学习JavaScript脚本语言,首先来揭开其面纱:“JavaScript是什么?”
1.1.1 JavaScript简史
20世纪90年代中期,大部分互联网用户使用28.8kb/s的调制解调器连接到网络进行网上冲浪,为解决网页功能简单的问题,HTML文档已经变得越来越复杂和庞大,更让用户痛苦的是,为验证一个表单的有效性,客户端必须与服务器端进行多次的数据交互。难以想象这样的情景:当用户填完表单并单击提交后,经过漫长的几十秒等待,服务器端返回的不是“提交成功”的喜悦,却是“某某字段必须为阿拉伯数字,请单击按钮返回上一页面重新填写表单!”的错误提示!当时业界已开始考虑开发一种客户端脚本语言,用于解决诸如表单合法性验证等简单而实用的问题。
1995年Netscape和Sun公司联合开发出JavaScript脚本语言,并在Netscape Navigator 2中实现了JavaScript脚本规范的第一个版本,即JavaScript 1.0版,不久就显示了其强大的生机和发展潜力。当时Netscape Navigator主宰着Web浏览器市场,而Microsoft的IE则扮演追赶者的角色,为了跟上Netscape的步伐,Microsoft在其Internet Explorer 3中以JScript为名,发布了一个JavaScript 1.0的克隆版本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标准发布Edition 2版本,此版本并没有添加、更改和删除任何内容。ECMA-262标准Edition 3版本提供了对字符串处理、错误定义和数值输出等方面的更新,同时增加了对try…catch异常处理、正则表达式、新的控制语句等方面的完美支持,它标志着ECMAScript成为一门真正的编程语言,以ECMAScript为核心的JavaScript脚本语言得到了迅猛的发展。ECMA-262标准Edition 4版本正在制定过程中,可能明确类的定义方法和命名空间等概念。表1.1为ECMA-262标准4个版本之间的异同,以及浏览器版本支持情况。
表1.1 ECMA -262标准各版本间的异同及浏览器支持情况
1999年6月,ECMA发布ECMA-290标准,主要添加了使用ECMAScript来开发可复用组件的内容。
2005年12月,ECMA发布ECMA-357标准(ISO/IEC 22537),主要增加对扩展标记语言XML的有效支持。
注意: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页面中,在客户端浏览该页面过程中,浏览器自动解释执行该代码,且不需要用户的任何操作,从而给用户带来一定的风险。