2.2 常量和变量
程序执行过程中,其值不能被改变的称为常量,其值能被改变的称为变量。本节将对JavaScript脚本语言的常量和变量进行详细讲解。
2.2.1 常量
常量是指在程序运行过程中保持不变的数据。例如,123是数值型常量,“JavaScript脚本”是字符串型常量,true或false是布尔型常量等。在JavaScript脚本编程中,可直接输入这些常量值。
2.2.2 变量
变量是指程序中一个已经命名的存储单元,其主要作用就是为数据操作提供存放信息的容器。对于变量的使用,首先必须明确其命名规则、声明方法及其作用域。
1.变量的命名
JavaScript中,变量的命名规则如下:
必须以字母或下画线开头,中间可以是数字、字母或下画线。
不能包含空格、加号、减号等符号。
不能使用JavaScript中的关键字(如表2.2所示)。
严格区分大小写。例如,UserName与username代表两个不同的变量。
说明
虽然JavaScript中变量可以任意命名,但是在实际编程时,最好还是使用便于记忆且有意义的变量名称,以增加程序的可读性。
表2.2 JavaScript的关键字
2.变量的声明与赋值
在JavaScript中,使用变量前需要先对其进行声明。所有的JavaScript变量都由关键字var声明,语法格式如下:
var variable;
在声明变量的同时,也可以对变量进行赋值,例如:
var variable=11;
声明变量时所遵循的规则如下:
可以使用一个关键字var同时声明多个变量,例如:
var a,b,c; //同时声明a、b和c 3个变量
可以在声明变量的同时对其赋值,即进行初始化,例如:
var i=1;j=2;k=3; //同时声明i、j和k 3个变量,并分别对其进行初始化
如果只是声明了变量,并未对其赋值,则其值默认为undefined。
var语句可以用作for循环和for/in循环的一部分,这样就使循环变量的声明成为循环语法自身的一部分,使用起来比较方便。
也可以使用var语句多次声明同一个变量。如果重复声明的变量已经有一个初始值,那么此时的声明就相当于对变量的重新赋值。
给一个尚未声明的变量赋值时,JavaScript会自动用该变量名创建一个全局变量。在函数内部创建的通常是一个仅能在函数内部起作用的局部变量,而不是一个全局变量。要创建一个局部变量,不需要赋值给一个已经存在的局部变量,只需要使用var语句进行变量声明即可。
例如,声明一些变量,代码如下:
JavaScript中,变量可以不事先声明,使用时根据其实际作用来确定其数据类型即可。但本书建议读者在使用变量前先进行声明,这是因为JavaScript采用动态编译,不易于发现代码中的错误,特别是变量命名方面的错误,通过声明变量可以及时发现代码中的错误。
3.变量的作用域
变量的作用域(Scope)是指变量在程序中的有效范围。JavaScript中根据作用域,变量可以分为两种:全局变量和局部变量。全局变量是定义在所有函数之外,作用于整个脚本代码的变量;局部变量是定义在函数体内,只作用于函数体的变量(函数的参数也是局部性的,只在函数内部起作用)。例如,下面的程序代码说明了变量的作用域。
说明
JavaScript中用“;”作为语句结束标记,如果不加也可以正确地执行。用“//”作为单行注释标记;用“/*”和“*/”作为多行注释标记;用“{”和“}”包装成语句块。“//”后面的文字为注释部分,在代码执行过程中不起任何作用。
4.变量的生存期
变量的生存期是指变量在计算机中存在的有效时间。全局变量在主程序中定义,其有效范围从其定义开始,一直到本程序结束为止。局部变量在程序的函数中定义,其有效范围只在该函数之中。函数结束后,局部变量的生存期也就结束了。