
2.3 运算符
运算符是完成一系列运算操作的符号,本节将介绍JavaScript的运算符。JavaScript中的运算符按操作数可以分为单目运算符、双目运算符和多目运算符3种;按运算符类型可以分为算术运算符、比较运算符、赋值运算符、字符串运算符、逻辑运算符和条件运算符等。
2.3.1 算术运算符
算术运算符用于在程序中进行加、减、乘、除等运算。在JavaScript中常用的算术运算符如表2.3所示。
表2.3 JavaScript中的算术运算符

【例2.2】 通过JavaScript在页面中定义变量,再通过算术运算符计算变量的运行结果。(实例位置:资源包\TM\sl\2\02)

运行结果如图2.2所示。

图2.2 在页面中计算两个变量的算术运算结果
2.3.2 比较运算符
比较运算的基本操作过程是:首先对两个操作数进行比较(该操作数可以是数字也可以是字符串),然后返回一个布尔值true或false。在JavaScript中常用的比较运算符如表2.4所示。
表2.4 JavaScript中的比较运算符

【例2.3】 应用比较运算符比较两个数值的大小。(实例位置:资源包\TM\sl\2\03)

运行结果如图2.3所示。

图2.3 比较运算符的使用
2.3.3 赋值运算符
JavaScript中的赋值运算分为两种:简单赋值运算和复合赋值运算。简单赋值运算是将赋值运算符(=)右边表达式的值保存到左边的变量中;而复合赋值运算混合了其他操作(如算术运算操作、位操作等)和赋值操作,例如:
sum+=i; //等同于sum=sum+i;
JavaScript中的赋值运算符如表2.5所示。
表2.5 JavaScript中的赋值运算符

2.3.4 字符串运算符
字符串运算符用于两个字符型数据之间的运算。除了比较运算符外,还包括“+”和“+=”运算符。其中,“+”运算符用于连接两个字符串,“+=”运算符用于连接两个字符串并将结果赋给第一个字符串。表2.6给出了JavaScript中的字符串运算符。
表2.6 JavaScript中的字符串运算符

【例2.4】 在网页中弹出一个提示对话框,显示字符串运算后变量的值:(实例位置:资源包\TM\sl\2\04)

运行代码,结果如图2.4所示。

图2.4 字符串相连
2.3.5 逻辑运算符
在JavaScript中增加了几个逻辑运算符,常用的逻辑运算符如表2.7所示。
表2.7 常用逻辑运算符

2.3.6 条件运算符
条件运算符是JavaScript支持的一种特殊的三目运算符,其语法格式如下:
操作数?结果1:结果2
如果“操作数”的值为true,则整个表达式的结果为“结果1”,否则为“结果2”。
例如,定义两个变量,值都为10,然后判断两个变量是否相等,如果相等则返回“正确”,否则返回“错误”。代码如下:

2.3.7 其他运算符
1.位运算符
位运算符分为两种,一种是普通位运算符,另一种是位移运算符。在进行运算前,先将操作数转换为32位的二进制整数,然后进行相关运算,最后的输出结果以十进制表示。位运算符可对数值的位进行操作,如向左或向右移位等。JavaScript中常用的位运算符如表2.8所示。
表2.8 位操作运算符

2.typeof运算符
typeof运算符用于返回操作数当前所容纳的数据的类型。这对于判断一个变量是否已被定义特别有用。
【例2.5】 下面应用typeof运算符返回当前所容纳的数据类型。(实例位置:资源包\TM\sl\2\05)
代码如下:

运行结果如图2.5所示。

图2.5 运行结果
说明
typeof运算符把类型信息当作字符串返回。其返回值有6种可能:number、string、boolean、object、function和undefined。
3.new运算符
通过new运算符可创建一个新对象。
语法格式:
new constructor[(arguments)]
参数说明:
constructor:必选项,对象的构造函数。如果构造函数没有参数,则可以省略圆括号。
arguments:可选项,任意传递给新对象构造函数的参数。
例如,应用new运算符来创建新对象,代码如下:
Object1 = new Object; Array2 = new Array(); Date3 = new Date("August 8 2019");
2.3.8 运算符优先级
JavaScript运算符有着明确的优先级与结合性。优先级较高的运算符将先于优先级较低的运算符进行运算,结合性则是指具有同等优先级的运算符将按照怎样的顺序进行运算。结合性分为向左结合和向右结合两种。例如表达式“a+b+c”,向左结合意味着先计算a+b,整个计算过程为(a+b)+c;向右结合意味着先计算b+c,整个计算过程为a+(b+c)。JavaScript运算符的优先级与结合性如表2.9所示。
表2.9 JavaScript运算符的优先级与结合性

【例2.6】 优先级的使用。(实例位置:资源包\TM\sl\2\06)
本实例使用“()”来改变运算的优先级。表达式a=1+2*3的结果为7,因为乘法的优先级比加法的优先级高,将被优先运行。通过括号“()”改变运算符的优先级之后,括号内的表达式将被优先执行,所以表达式b=(1+2)*3的结果为9。代码如下:

运行结果如图2.6所示。

图2.6 运行结果