第一章:JavaScript概述
JavaScript是面向Web的编程语言。绝大多数现代网站都使用了JavaScript,并且所有的现代Web浏览器——基于桌面系统、游戏机、平板电脑和智能手机的浏览器——均包含了JavaScript解释器。这使得JavaScript能够称得上史上使用最广泛的编程语言。JavaScript也是前端开发工程师必须掌握的三种技能之一:描述网页内容的HTML、描述网页样式的CSS以及描述网页行为的JavaScript。本书能帮助你掌握JavaScript这门语言。
如果你有其他语言的编程经历,这会有助于你了解JavaScript是一门高端的、动态的、弱类型的编程语言,非常适合面向对象和函数式的编程风格。JavaScript的语法源自Java,它的一等函数(first-class function)来自于Scheme,它的基于原型(prototype-based)的继承来自于Self。但使用本书学习JavaScript不必去了解那些(Java/Scheme/Self)语言或熟悉那些术语。
“JavaScript”这个名字经常被误解。除了语法看起来和Java类似之外,JavaScript和Java是完全不同的两种编程语言。JavaScript早已超出了其“脚本语言”(scripting-language)本身的范畴,而成为一种集健壮性、高效性和通用性为一身的编程语言。最新的语言版本为严谨的大型软件开发定义了诸多新的特性。
JavaScript:名字和版本
JavaScript是由Web发展初期的网景(Netscape)公司创建,“JavaScript”是Sun Microsystem公司(现在的Oracle)的注册商标,用来特指网景(现在的Mozilla)对这门语言的实现。网景将这门语言作为标准提交给了ECMA——欧洲计算机制造协会—由于商标上的冲突,这门语言的标准版本改了一个丑陋的名字“ECMAScript”。同样由于商标的冲突,微软对这门语言的实现版本取了一个广为人知的名字“Jscript”。实际上,几乎所有人都将这门语言叫做“JavaScript”.本书也仅仅使用“ECMAScript”来指代语言标准。
在最近10年间,所有的Web浏览器都实现了第3版ECMAScript标准,我们也已经不必再去考虑版本号了:语言标准已经很稳定了,并且被几乎所有浏览器完整地实现了。最近,ECMAScript第5版定义了新的语言标准,在撰写本书时,浏览器已经开始实现它了。除了ECMAScript 3长期保留下来的特性,本书还涵盖了所有ECMAScript 5的新特性。正如我们经常将JavaScript简写成JS一样,ECMAScript 3和ECMAScript 5有时也会简写成ES3和ES5。
当我们提到这门语言本身时,通常所指的语言版本是ECMAScript 3和ECMAScript 5(ECMAScript 4已经开发了数年,但由于太过庞大,从未发布过正式版本)。有时会看到JavaScript的版本号(比如JavaScript 1.5或JavaScript 1.8)。这些是Mozilla的版本号:版本1.5基本上就是ECMAScript 3,后续版本包含了非标准的语言扩展(参照第11章)。最后,JavaScript解释器或者“引擎”(engine)也有版本号,比如,Google将它的JavaScript解释器叫做V8,在撰写本书时V8引擎最断版本是3.0。
为了有用起见,通常每一种编程语言都有各自的开发平台、标准库或API函数,用来提供诸如基本输入输出的功能。JavaScript语言核心针对文本、数组、日期和正则表达式的操作定义了很少的API,但是这些API不包括输入输出功能。输入和输出功能(类似网络、存储和图形相关的复杂特性)是由JavaScript所属的“宿主环境”(hostenviroment)提供的。这里所说的宿主环境通常是Web浏览器(第12章会介绍两个不基于Web浏览器的JavaScript宿主环境),本书第–部分涵盖了语言本身的特性以及少址的内置API。第二部分讲解了JavaScript如何在Web浏览器中工作,并涵盖基于浏览器的API—-这部分也称做“客户端JavaScript”。
本书第三部分是核心API的参考手册。比如,在这部分,可以查找“Array”以获得JavaScript数组操作API的详细信息。第四部分是客户端JavaScript参考手册,比如,你可以在这部分查找“canvas”来获得HTML 5 <canvas>元素定义的图形编程API。
本书首先讲解初级的基础部分,然后讲解更高级和更抽象的内容。本书的章节也是如此安排以便你能循序阅读。但学习一门新的编程语言绝非易事,当然要完整描述这门语言就没办法苛求知识点的循次渐进,每一种语言特性都和其他特性相互关联,本书的知识点也是前后参照的,有时参照的知识点在后续章节,有时在已经阅读的章节。本章快速介绍了语言核心部分和客户端API及其关键特性,以便你能更方便更深入地阅读理解后续章节。
JavaScript初探
当学习一门新的编程语言的时候,应当对照书中的示例边学边动手做,反复演练以加深自己的理解。因此,你需要一个JavaScript解释器。幸运的是,每一个Web浏览器都包含一个JavaScript解释器,当你阅读本书时,你可能已经在电脑上安装了不止一个Web浏览器了。
可以通过在HTML文件里写一个<script>标签来嵌入JavaScript代码,当浏览器加载HTML文件的时候,它会自动执行这段代码,随后会有提到。幸运的是,如果运行的是一小段JavaScript代码,则不必每次都这样做。我们可以利用Firefox的-一个强大的革命性的插件Firebug (见图1-1,可以从http:llgetfirebug.com/下载Firebug)来运行这些小段代码,而且如今的Web浏览器带有很多开发工具,可以用来调试、试验和学习。通常在浏览器的“工具”菜单中可以看到类似“开发者工具”或者“Web控制台”的选项(Firefox 4内置了“Web控制台”,不过更推荐使用Firebug)。可以通过按F12键或者Ctrl+Shift+J快捷键来唤醒控制台译注1。控制台工具通常会在浏览器窗口的顶部或底部,有时候也可以单独打开一个窗口(见图1-1),这样会更加方便。
通常“开发者工具面板”窗口包含了很多选项卡,可以查看HTML文档结构、cSs样式、网络请求等。其中第一个选项卡是“JavaScript控制台”,可以直接输入JavaScript代码并运行出结果。用这种方式来调试JavaScript既简单又实用,这里强烈推荐读者使用这种方式来辅助你阅读本书。
一些现代浏览器有可能实现了一个简单的控制台API。可以通过使用函数console.log()来向控制台输出消息,使用console.log()来做简单的输出演示,通过这种方式可以非常方便地调试本书的示例代码。同样,也可以通过给alert()函数传入一段文本来弹出一个对话框,但这种榆出调试信息的方法更具侵入性。