2.4 变量
可以直接在JavaScript程序中输入数值、字符串或Boolean值,但是只有当我们已经有了所需的信息的时候,这些数据类型才有效。例如,可以让字符串“Hi Bob”出现在一个警告框中,如下所示:
alert('Hi Bob');
但是,只有在访问页面的每个人名字都叫Bob的时候,这条语句才有意义。如果你想要为不同的访问者显示一条个性化信息,名字就要根据访问页面的人而有所不同,例如'Hi Mary'、'Hi Joseph'、'Hi Ezra'等。基本上所有的编程语言都提供了所谓的变量来处理这种情况。
变量是存储信息以便稍后使用或操作它们的一种方式。例如,假设有一个基于JavaScript的弹球游戏,其目标是获取最高分。当一个玩家初次开始游戏,他的分数是0,但是,随着弹球击中目标,得分逐渐增加。在这个例子中,分数(score)是一个变量,因为它从0开始但是随着游戏的进行而变化,换句话说,变量保存可以变化的信息。使用变量的另一个程序的例子如图2-1所示。
把变量看做一种篮子,我们可以在篮子中放置一个物品,看看篮子里的内容,把篮子里的东西倒出来,或者甚至用其他的物品替换篮子中的物品。然而,即便可以改变篮子里的内容,它仍然是同一个篮子。
图 2-1 World's Biggest Pac-Man(http://worldsbiggest-pacman.com/)网站使用JavaScript来创建一个带有数千个迷宫的Pac-Man游戏。这款游戏记录了你的当前分数和最高分(top),还有吃掉的Pac豆子的总数以及其他的游戏相关数据(right)。这些都是变量的例子,因为它们的值会随着游戏的进行而改变
2.4.1 创建变量
创建变量的过程分两步,包括声明变量和命名变量。在JavaScript中,要创建一个名为score的变量,需要输入:
var score;
第一部分var是一个JavaScript关键字,它创建了(或者用编程的术语来说,声明了)一个变量。这条语句的第二部分score是一个变量。怎么命名变量取决于你,但是,在命名变量的时候要遵守一些规则:
·变量名必须以一个字母、$或_开头。换句话说,不能以数字或标点符号开始一个变量:因此,1thing和&thing是无效的,但是score、$score和_score都是合适的变量名。
·变量名只能包含字母、数字、$和_。在变量名中的任何地方,都不能使用空格或任何其他的特殊字符:fish&chips以及fish and chips都是非法的变量名,但是fish_n_chips和plan9是有效的变量名。
·变量名区分大小写。JavaScript解释器把大写字母和小写字母看成是不同的,因此,变量名SCORE和score是不同的,而且它与sCoRE和Score也是不同的。
·避免使用关键字。JavaScript中的一些单词是特定于语言本身:例如,var用来创建一个变量,因此,不能把一个变量命名为var。此外,一些单词,例如alert、document和window,被看做是Web浏览器的特殊属性。如果试图用这些单词作为变量名,最终会产生一个JavaScript错误。可以在表2-1中看到一些保留字的列表。并非所有这些保留字都会在所有的浏览器中引发问题,但是,最好在命名变量的时候避开这些名字。
除了这些规则,还要以使得变量名清楚和有意义为目标。根据将要在变量中存储的数据的类型来命名变量,这会使人们更容易阅读程序,并且立即理解它要做什么。例如,对于记录玩家的游戏分数的变量来说,score是一个很好的名字。变量名s也有效,但是,单个字母“s”对于变量中存储的内容不会有任何启发。
同样,要让变量名容易阅读。当你在一个变量名中使用多个单词的时候,要么在单词之间使用一个下划线,要么把第一个单词之后的每个单词的首字母都大写。例如,imagepath不如image_path或imagePath容易阅读和理解。