JavaScript用变量保存在程序执行过程中可能发生变化的数据。为了便于区分每个变量,开发者可以给每个变量起一个简洁明了、容易记住的名字,也就是“变量名”。变量名指向计算机内存中的某个地址,真正的数据存储在内存中。这和日常生活中取快递的过程存在相似之处。
在日常生活中,当快递被送到快递超市后,快递超市会给顾客发送一个“提货码”,之后顾客可以通过出示“提货码”给快递超市的服务人员,从而拿到自己的快递。在这个过程中,“快递超市”相当于“内存”,顾客在网上购买的物品相当于存在“内存”中的“变量”,“提货码”相当于“变量名”,顾客不需要知道自己的“物品”存在快递超市的哪个角落,只要通过“提货码”就可以找到自己的“物品”。
JavaScript声明变量的语法有以下几种方式。
(1)使用关键字var可以一次声明一个或多个变量,不同变量间使用逗号隔开。示例如下:
var age;// 一次声明一个变量 var age,userName,gender;// 一次声明多个变量
var是JavaScript关键字,用来声明变量。使用该关键字声明变量后,计算机会自动为变量分配内存空间。age、userName、gender代表变量名,开发者可以通过变量名来访问变量在内存中分配的空间。
(2)声明变量时可以不初始化,此时其值默认为undefined,也可以在声明变量的同时初始化变量。示例如下:
var age = 20;// 声明的同时初始化变量 var age = 20,userName,gender = '男';// 声明的同时初始化部分变量 var age = 20,userName = '冰墩墩',gender = '男'; //声明的同时初始化全部变量
运算符“=”把右边的值赋给左边的变量存储空间中,此处代表赋值的意思。变量值是保存到变量存储空间里的值。
(3)声明变量时不初始化,使用赋值语句赋值。示例如下:
var age;// 声明变量age,没有初始化 age = 20;// 将变量age赋值为20
(4)不使用关键字var声明,直接使用变量。本书不建议这样声明,通常的做法是在使用变量前先声明。示例如下:
age = 20;// 没有使用var声明,直接给变量age赋值为20 console.log(age);// 输出:20
提示: JavaScript声明变量时可以不初始化,但对变量进行初始化是一个良好的编程习惯。
项目开发中,需要自定义一些符号来代表一些名称,如变量名、函数名、数组名、对象名等,这些符号称为标识符。JavaScript中标识符的定义需要遵循以下规则。
(1)第一个字符必须是字母、下划线或美元符号,其后的字符可以是字母、数字、下划线或美元符号。
(2)不能包含空格。
(3)不能包含“+”“-”“@”“#”等特殊字符。
(4)不能和JavaScript中的关键字及保留字同名。
(5)区分大小写。
关键字是指JavaScript中一些带有特殊含义的名称,它们是语言结构的一部分。保留字是指当前JavaScript版本中没有用到,但是将来可能用到的关键字。JavaScript中常见关键字和保留字如表2-1和表2-2所示。
表2-1 JavaScript常见关键字
表2-2 JavaScript常见保留字
变量命名,示例如下:
var var;// 错误。var是关键字 var 1name;// 错误。变量名不能以数字开头 var user name;// 错误。变量名不能包含空格 var $userName;// 正确 var user+Name;// 错误。变量名不能包含“+”“-”“@”“#”等特殊字符 var userName; // 正确 var UserName; // 正确。userName和UserName是不同的两个变量名
变量命名时,不仅要遵守命名规则,还要遵循命名规范。命名规范是一种约定,也是程序员之间良好沟通的桥梁。
变量命名时,可以采用一些常见的命名法,例如驼峰式命名法和帕斯卡命名法。
(1)驼峰式命名法。第一个单词以小写字母开始,从第二个单词开始以后的每个单词首字母都采用大写字母,例如myFirstName、myLastName。
(2)帕斯卡命名法。帕斯卡命名法的每个单词首字母均大写,例如MyFirstName、MyLastName。变量命名时,尽量遵循以下规范。
(1)使用简单易识别的单词。比如需要为“成绩”起名,可以用score表示。
(2)描述要准确,符合语义,以清晰为主、简洁为辅。比如value和data都表示一个值,但是并不知道它代表的是什么值,应起见名识义的名字,例如inputValue和outputData。
提示: 良好的命名规范可以为团队合作开发推波助澜,无论在项目开发,还是产品维护上都起到了至关重要的作用。像遵守命名规则和规范一样,我们在日常生活中要遵守相应的制度与规定,并用以约束和指导自己的行为,成为合格的社会公民。
使用变量时,有以下3种特殊情况。
(1)变量声明时没有初始化直接使用,此时变量的值是undefined。示例如下:
var age;// 声明变量age,没有初始化 console.log(age);// 输出:age的值是undefined
(2)变量没有声明,直接使用会报错。
console.log(age);// 没有声明变量age,输出age的值
上述代码在Chrome浏览器控制台中的报错信息,如图2-1所示。
图2-1 Chrome浏览器控制台中的报错信息
(3)尽量不使用name作为变量名。JavaScript中name既不是保留字,也不是关键字,因此用作变量时并不会报错。但Firefox、Safari、Chrome和Opera等浏览器内置了一个非标准的name属性,因此在这些浏览器中不能使用name作为变量名。