零基础学JavaScript
上QQ阅读APP看书,第一时间看更新

2.5 常量

常量(literal)通常用来表示一个固定的值,这个值是不会被改变的,在JavaScript中常量分为整数常量、浮点常量、字符串常量、布尔常量和数组常量5种。常量可以直接出现在JavaScript的程序中。

2.5.1 整数常量

JavaScript中的数字可以分为整数与浮点数两种。当一个整数直接出现在JavaScript程序中时,这个整数就是整数常量。在JavaScript中整数常量又可以分为以下3种。

(1)十进制整数:十进制整数就是一个由0~9组成的数字序列,并且该序列的第一个数字不能是0(单独一个0除外)。以下代码都表示十进制整数常量:


0
123
9783649

(2)八进制整数:八进制整数的第一个数字是0,其后跟着一个由0~7组成的数字序列。以下代码都表示八进制整数常量:


0345
0127
07

(3)十六进制整数:十六进制整数是以“0x”或“0X”开头的,其后跟着十六进制的数字序列。十六制的数字序列由数字0~9和英文字母a~f(A~F)组成。以下代码都表示十六进制的整数常量:


0x123
0X134
0x12ff
0xff

整数常量通常直接出现在JavaScript的计算上,例如以下代码:


a = a + 123
b = 4 * 7

注意

只要是常量,通常都是直接出现在JavaScript程序中的。

2.5.2 浮点数常量

浮点数常量可以包含小数点,其表示方法有以下两种。

(1)传统记数法:传统记数法是将一个浮点数分为3个部分,即整数部分、小数点和小数部分。如果整数部分为0,可以省略整数部分。以下代码中的浮点数表示法为传统记数法:


1.2
23344.283
.22323

(2)科学记数法:当一个数字很大或很小的时候,可以使用科学记数法来表示。科学记数法将一个数字分为3部分,第1部分与传统记数法一样,是一个带小数的浮点数;第2部分是e或E;第3部分是一个带正号或负号的整数,其中正号可以省略。以下代码中的浮点数表示法为科学记数法:


1.2e3
1E4
3.5e-2
6.112E-3

在科学记数法中,e(或E)后面的整数代表10的指数次幂,再将该指数次幂乘以e(或E)前面的浮点数得到的就是科学记数法所代表的数值。请看以下例子:


1.2e3 = 1.2 × 103 = 1200
1E4 = 1 × 104 = 10000
3.5e-2 = 3.5 × 10-2 = 0.035
6.112E-3 = 6.112 × 10-3 = 0.006112

2.5.3 字符串常量

字符串是由单引号(')或双引号(")括起来的字符序列。其中字符序列的个数可以是零个或多个。单引号括起来的字符序列里可以包括双引号,而双引号所括起来的字符序列里也可以包含单引号。字符串常量必须写在一行中,如果换行的话,JavaScript会将其认为是两个语句,从而引发错误。以下代码都是字符串常量:


"JavaScript"
'JavaScript'
"JavaScript's language"
'aa"bb'

2.5.4 字符串中的转义字符

上一节提到的字符串常量必须使用单引号或双引号括起来,如果一个字符串本身包含了单引号或双引号,那应该怎么办呢?假设一个字符串如下所示:


JavaScript中可以包含单引号(')或双引号(")

如果一个字符串常量中的内容如上所示,那么在JavaScript中要怎么表示呢?是用单引号将其括起来,还是用双引号将其括起来呢?如下所示,无论是使用单引号,还是使用双引号,在JavaScript中都会造成混淆,因为JavaScript无法分辨哪个引号是属于字符串、哪个引号是属于标识字符串常量的引号。


'JavaScript中可以包含单引号(')或双引号(")'
"JavaScript中可以包含单引号(')或双引号(")"

对于这种情况,就必须使用转义字符。使用转义字符可以在字符串里加入一些特殊字符,如上面所说的单引号和双引号等。转义字符是以反斜杠(\)开始的,例如单引号可以使用“\'”来代替,双引号可以使用“\"”来代替。当浏览器解析JavaScript代码时,遇到转义字符“\'”和“\"”就会知道这是字符串中的一个字符,而不是标记字符结束的字符。因此,上面代码中的字符串常量可以写成如下代码:


'JavaScript中可以包含单引号(\')或双引号(")'
"JavaScript中可以包含单引号(')或双引号(\")"
'JavaScript中可以包含单引号(\')或双引号(\")'
"JavaScript中可以包含单引号(\')或双引号(\")"

在JavaScript中常用到的转义字符如表2.1所示。

表2.1 JavaScript中的转义字符

【实例2.1】有关转义字符的使用方法,请看以下代码,注意加粗的文字:


01   <html>
02      <head>
03         <title>转义符的使用</title>
04         <script type="text/javascript">
05            <!--
06                  document.write("JavaScript中可以包含单引号(\')或双引号(\")
07                  <br>");
08                  document.write("本机的操作系统安装在C:\\Windows\\system32下");
09                  alert("学做网页的两个基础:\nHTML\nJavaScript");
10            -->
11         </script>
12      </head>
13      <body>
14      </body>
15   </html>

【代码说明】代码第9行中有\n,它就是一个转义字符,表示换行,而代码第6行使用了\,它一般用在单引号或双引号之前。

【运行效果】以上代码为本书配套代码文件目录“代码\第02章\sample01.htm”里的内容(可在www.hzbook.com下载),其运行结果如图2.1所示,可以看出,“\'”输出为“'”、“\"”输出为“"”、“\\”输出为“\”,而“\n”在警告框里产生了换行。

图2.1 sample01.htm的运行结果

说明

在上面的代码表示的页面结构中,<html>标签用于标记文档的开始和结束,即<html>标记开始位置,</html>标记结束位置。<html>标签内容主要由两部分组成,第一部分为头部标签<head>,<head>标记开始,</head>标记结束。在头部标签内又有<title>标签,<title>标记开始,</title>标记结束。第二部分为网页的主体,在编辑网页时把内容直接添加到<body>与</body>之间即可。

在头部标签<head>中嵌入了JavaScript脚本,其由<Script>…</Script>来标记。<Script>标记的常用属性有type、src、defer。

■type属性用来设置所使用的脚本语言,此属性已代替language属性。格式为:<script type="text/javascript">。

■src属性用来设置一个外部脚本文件的路径位置。格式为<script src="a.js ">。

■defer属性用来表示当HTML文档加载完毕后再执行脚本语言。格式为<script defer>。

2.5.5 布尔常量

布尔常量是比较简单的一种常量,只有两种值,一种是true(真),一种是false(假)。在有些时候,JavaScript也可以把0和1分别看成false和true。布尔常量常用于条件判断语句中。

2.5.6 数组常量

数组就是一些数据的集合,在JavaScript中数组中的数据可以是任何数据类型,包括数组。数组的定义方法如下所示:


数组名 = [数组值1, 数组值2, 数组值3 ……]

在数组中有以下两个重要的概念。

■数组长度:所谓数组长度就是数组中包含多少个数据。

■数组下标:数组使用下标来获取数组中的某个值。数组下标值是从0开始的,下标的最大值为数组长度减1。获取数组中某个值的方法如下所示:


数组名[下标值]

【实例2.2】有关数组的使用方法请看以下代码,注意加粗的文字:


01   <html>
02      <head>
03         <title>数组</title>
04         <script type="text/javascript">
05            <!--
06                  arr = ["JavaScript",2,true];
07                  document.write(arr[0]+"<br>");
08                  document.write(arr[1]+"<br>");
09                  document.write(arr[2]+"<br>"); 
10            -->
11         </script>
12      </head>
13      <body>
14      </body>
15   </html>

【代码说明】代码第6行创建了数组arr,并指定了数组的内容,然后第7~9行通过arr[索引]的形式读取数组内容。

注意

数组索引是从0开始的,即arr[0]表示第一个数值。

【运行效果】以上代码为本书配套代码文件目录“代码\第02章\sample02.htm”里的内容,其运行结果如图2.2所示。

图2.2 sample02.htm的运行结果

【实例2.3】在定义数组常量时,还可以省略某些数据值,而直接用逗号隔开即可。请看以下代码,注意加粗的文字:


01   <html>
02      <head>
03         <title>数组</title>
04         <script type="text/javascript">
05            <!--
06                  arr = ["JavaScript",,true,];
07                  document.write(arr[0]+"<br>");
08                  document.write(arr[1]+"<br>");
09                  document.write(arr[2]+"<br>");
10                  document.write(arr[3]+"<br>");
11            -->
12         </script>
13      </head>
14      <body>
15      </body>
16   </html>

【代码说明】代码第6行创建了数组arr,在给定默认值的时候中间有两个逗号。逗号是数组中值的间隔符号,这里省略了值。代码第7~10行可以输出4个值,虽然有两个值没有指定默认值,但依然可以输出,输出结果为undefined。

【运行效果】以上代码为本书配套代码文件目录“代码\第02章\sample03.htm”里的内容,其运行结果如图2.3所示。在本例中数组的长度为4,arr[0]的值为字符串“JavaScript”,arr[1]和arr[3]的值都为undefined,arr[2]的值为布尔值true。

图2.3 sample03.htm的运行结果