本节书摘来自华章出版社《JavaScript和jQuery实战手册(原书第3版)》一书中的第1章,第1.1节,作者David Sawyer McFarland,姚待艳 李占宣 译,更多章节内容可以访问“华章计算机”公众号查看。
第1章
编写第一个JavaScript程序
HTML自身并没有太多智能:它不能做数学运算,不能判断某人是否正确填写了一个表单,而且不能根据Web访问者的交互来做出判断。基本上,HTML让人们阅读文本、观看图片或视频,并且单击链接转向拥有更多文本、图片和视频的下一个Web页面。若要给Web页面添加智能,使其可以对站点的访问者做出响应,则需要使用JavaScript。
JavaScript允许Web页面智能地反应。有了它,就可以创建智能的Web表单,当访问者忘了包含必需的信息时,表单可以告知访问者。你可以让元素显示、消失,或者在页面上来回移动(如图1-1所示)。甚至可以用从Web服务器获取的信息来更新Web页面的内容(而不必载入一个新的Web页面)。简而言之,JavaScript使得Web站点更加动人、高效和有用。
注意 实际上,HTML5也为HTML添加了一些智能,包括基本的表单验证。但是,由于并非所有的浏览器都支持这些漂亮的功能(以及由于你可以使用表单和JavaScript实现更多的功能),你仍然需要用JavaScript来构建最好的、更为用户友好和交互性的表单。通过Ben Henick的《HTML5 Forms》(O'Reilly)和Gaurav Gupta的《Mastering HTML5 Forms》(Packt Publishing)可了解关于HTML5和Web表单的更多内容。
1.1 编程简介
对于很多人来说,“计算机编程”使他们脑海里浮现出这样的情景:拥有超常智慧的家伙在键盘前弯腰而坐,连续数小时飞快地敲击着几乎难以理解的、含混不清的语言。确实,某些编程工作就是那样的。编程可能像是非凡之人表演的复杂魔术。虽然很多编程概念很难掌握,但是在编程语言中,JavaScript对于非程序员来说算是相对友好的。
然而,JavaScript比HTML或CSS都要复杂,并且,对于Web设计者来说,编程往往是一个陌生的世界。因此,本书的目标之一是帮助你像一个程序员一样思考。在本书中,你将学习基本的编程概念,不管你是编写JavaScript、ActionScript,还是使用C++编写桌面程序,这些概念都适用。更重要的是,你将学习如何完成一个编程任务,从而在把JavaScript添加到Web页面之前,就确切地知道自己想要做什么。
很多Web设计师受到JavaScript中用到的奇怪符号和单词的影响而望而却步。常见的JavaScript程序中充满了符号({}[];,()!=)和不熟悉的单词(var、null、else if)。这看上去就像是一门外语,并且很多时候,学习编程语言和学习其他语言很相似。你需要学习新单词、新标点,并且理解如何把它们组合起来以便成功沟通。
实际上,每种编程语言都有它自己的一组关键字和字符,以及组合这些关键字和字符的一组规则,即语言的语法。我们需要记住JavaScript语言的单词和规则(或者至少有一本书在手边作为参考)。当学习一门新的语言的时候,我们会很快意识到,如果在错误的音节加了重音,可能使单词变得无法理解。同样,一个简单的输入错误甚至是遗漏了标点符号,都可能使得JavaScript程序无法运行,或者在Web浏览器中产生一个错误。在开始学习编程的时候,我们会犯很多错误,这是编程的本质导致的。
首先,你可能会发现用JavaScript编程令人沮丧,你要花很多的时间去找出自己在录入脚本时所犯的错误。此外,你可能会发现刚开始的时候一些和编程相关的概念难以理解。但是不要担心,如果你过去尝试学习过JavaScript并且因为它太难而放弃,本书将帮助你越过那些经常绊倒编程新手的障碍。(并且,如果你已经有了编程经验,本书将教会你针对Web浏览器编程时用到的JavaScript的特性以及独特概念。)
此外,本书不只是介绍JavaScript,还介绍了jQuery——世界上最流行的JavaScript库。jQuery使复杂的JavaScript编程变得更加容易,而且容易很多。因此,只需要有一些JavaScript的知识,再加上jQuery的帮助,你将能够立刻创建高级的、可交互性的Web站点。
常见问题
编译型语言与脚本编程语言
JavaScript是一种脚本编程语言。这个术语也用来描述PHP和ColdFusion这样的语言。那么,什么是脚本编程语言呢?
在计算机上运行的大多数程序都是使用编译型语言编写的。编译是指把程序员编写的代码转换为计算机能够理解的指令的过程。一旦编译了程序,就可以在计算机上运行它,既然编译后的程序已经直接转换为计算机能够理解的指令了,那么,它比脚本编程语言所编写的程序运行得更快。遗憾的是,编译一个程序是耗费时间的过程,你必须编写程序,编译它,然后测试。如果程序不工作,还必须重复整个过程。
另外,脚本编程语言只有在解释器(这是可以把脚本转换为计算机能够理解的内容的另外一个程序)读取它的时候才编译。以JavaScript为例,解释器内置到Web浏览器中。因此,当Web浏览器把带有JavaScript程序的一个Web页面读入其中的时候,Web浏览器就把JavaScript翻译成计算机能够理解的内容。因此,脚本编程语言运行起来比编译型语言要更慢,因为每次脚本程序运行的时候,都要为计算机进行翻译。脚本编程语言对于Web开发者来说是很好的,脚本通常要比桌面程序规模小而且结构没有那么复杂,因此,速度上的缺失并不是那么重要。此外,既然它们不需要编译,那么创建和测试使用脚本编程语言的程序就是一个较快的过程。
计算机程序
当你为Web页面添加JavaScript的时候,就是在编写一个计算机程序。当然,大多数JavaScript程序要比用来阅读E-mail、修复照片和构建Web页面的程序简单得多。即便JavaScript程序(也叫做脚本)较简单并且较短,但它们还是具有很多和较复杂的程序相同的属性。
简而言之,任何计算机程序都是以指定的顺序完成的一系列步骤。假设你想要用Web页浏览者的名字来显示一条欢迎消息,例如,“Welcome, Bob!”。要完成这个任务需要做几件事情:
1. 询问访问者的名字。
2. 获得访问者的响应。
3. 在Web页面上打印(即显示)消息。
虽然你可能不想在Web页面上显示一条欢迎消息,但这个例子展示了编程的基本过程:确定想要做什么,然后把任务分解为完成它所必须经过的单独步骤。每次想要创建一个JavaScript程序,你必须经历这个过程来确定实现目标所需的步骤。一旦知道了这些步骤,你就准备好编写程序了。换句话说,把思路翻译成程序代码(单词和字符),这些代码让Web浏览器去做我们想要的事情。