2.2.2 变量
变量是指程序中已经命名的存储单元,主要作用是为数据操作提供存储信息的容器。变量是相对常量而言的。常量是一个不会改变的固定值,而变量的值可能会随着程序的执行而改变。变量有两个基本特征,即变量名和变量值。为了便于理解,可以把变量看作一个贴着标签的盒子,标签上的名字就是这个变量的名字(即变量名),而盒子里面的东西就相当于变量的值。下面介绍变量的命名、变量的声明、变量的赋值以及变量的类型。
1.变量的命名
JavaScript中变量的命名规则如下。
必须以字母或下画线开头,其他字符可以是数字、字母或下画线。
变量名不能包含空格或加号、减号等符号。
变量名是严格区分大小写的。例如,UserName与username代表两个不同的变量。
不能使用JavaScript中的关键字作为变量名。JavaScript中的关键字如表2.2所示。
表2.2 JavaScript中的关键字
说明
JavaScript关键字是指在JavaScript语言中有特定含义的,并成为JavaScript语法中一部分的那些字。JavaScript关键字是不能作为变量名和函数名使用的,否则会使JavaScript在载入过程中出现语法错误。
虽然JavaScript的变量可以任意命名(前提是遵守命名规则),但是在编程时,最好使用便于记忆且有意义的变量名称,以增加程序的可读性。
2.变量的声明
在JavaScript中,使用变量前需要先声明变量,所有的JavaScript变量都是由关键字var声明的,语法格式如下。
var variablename;
其中variablename是声明的变量名。例如,声明一个变量username,代码如下。
var username; //声明变量username
另外,还可以使用一个关键字var同时声明多个变量,例如:
var username,sex,age; //同时声明3个变量,即username、sex和age
3.变量的赋值
在声明变量的同时可以使用等于号(=)对变量进行初始化赋值。例如,声明一个变量lesson并对其进行赋值,值为一个字符串“JavaScript从入门到精通”,代码如下。
var lesson="JavaScript从入门到精通"; //声明变量并对其进行初始化赋值
另外,还可以在声明变量之后对变量进行赋值,例如:
var lesson; //声明变量 lesson="JavaScript从入门到精通"; //对变量进行赋值
在JavaScript中,可以不先声明而直接对变量进行赋值。例如,给一个未声明的变量赋值,然后输出这个变量的值,代码如下。
str = "未声明的变量"; //给未声明的变量赋值 document.write(str); //输出变量的值
运行结果如下。
未声明的变量
在JavaScript中,虽然可以给一个未声明的变量赋值,但是建议在使用变量前对其进行声明,因为声明变量的最大好处就是能及时发现代码中的错误。由于JavaScript是采用动态编译的,因此不易于发现代码中的错误,特别是变量命名方面的错误。
说明
(1)如果只是声明了变量,并未对其赋值,则其值默认为undefined。
(2)可使用var语句重复声明同一个变量,也可在重复声明变量时为该变量赋一个新值。
例如,定义一个未赋值的变量a和一个进行重复声明的变量b,并输出这两个变量的值,代码如下。
var a; //声明变量a var b = "JavaScript网页特效"; //声明变量b并初始化 var b = "JavaScript从入门到精通"; //重复声明变量b document.write(a); //输出变量a的值 document.write("<br>"); //输出换行标记 document.write(b); //输出变量b的值
运行结果如下。
undefined JavaScript从入门到精通
注意
在JavaScript中,必须先定义变量才可使用,不能直接使用未经定义的变量。
4.变量的类型
变量的类型是指变量的值所属的数据类型,可以是数值型、字符串型和布尔型等,因为JavaScript是一种弱类型的程序语言,所以可以把任意类型的数据赋值给变量。
例如,先将一个数值型数据赋值给一个变量,在程序运行过程中,可以将一个字符串型数据赋值给同一个变量,代码如下。
var num=10; //定义数值型变量 num="这是一个数值" ; //定义字符串型变量
【例2.4】输出球员信息。(实例位置:资源包\TM\sl\2\04)
迈克尔·乔丹曾是NBA著名的篮球运动员之一。本例将迈克尔·乔丹的别名、身高、总得分、主要奖项以及场上位置分别定义在不同的变量中,并输出这些信息,代码如下。
<h1 style="font-size:24px;"> 迈克尔·乔丹</h1> <script type="text/javascript"> var alias = "飞人"; //定义别名变量 var height = 198; //定义身高变量 var score = 32292; //定义总得分变量 var achievement = "6次NBA总冠军"; //定义主要奖项变量 var position = "得分后卫/小前锋"; //定义场上位置变量 document.write("别名:"); //输出字符串 document.write(alias); //输出变量alias的值 document.write("<br>身高:"); //输出换行标记和字符串 document.write(height); //输出变量height的值 document.write("cm<br>总得分:"); //输出换行标记和字符串 document.write(score); //输出变量score的值 document.write("分<br>主要奖项:"); //输出换行标记和字符串 document.write(achievement); //输出变量achievement的值 document.write("<br>场上位置:"); //输出换行标记和字符串 document.write(position); //输出变量position的值 </script>
执行上述代码,结果如图2.6所示。
图2.6 输出球员信息
编程训练(答案位置:资源包\TM\sl\2\编程训练)
【训练3】输出俄罗斯的国土面积 俄罗斯是世界上国土面积最大的国家,其面积约为17 100 000 km2。将该面积定义在变量中,并输出俄罗斯的国土面积。
【训练4】输出人物的个人信息 将郭靖的姓名、性别、年龄、身高和武功这些个人信息定义在变量中,并在页面中输出。实现效果如下。
个人信息 姓名:郭靖 性别:男 年龄:20 身高:1.77m 武功:九阴真经、降龙十八掌