购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 ECMAScript加性运算符及表达式

ECMAScript语法中将加法(+)和减法(-)运算符统称为加性运算符,用于执行数值之间的加减算术运算。

3.1.1 加性运算符与表达式概述

关于ECMAScript语法中定义的加性运算符的内容详见表3-1。

表3-1 ECMAScript加性运算符与表达式

3.1.2 加法运算符及表达式

ECMAScript语法中规定加法运算符使用符号“+”来表示,加法(+)运算符除了可以进行正常的数值运算外,还支持对类似“NaN”和“Infinity”特殊值的运算。此外,加法(+)运算符还可以用于字符串的连接操作。

下面,来看一个应用ECMAScript加法(+)运算符的代码示例(详见源代码ch03目录中ch03-js-operator-add.html文件)。

【代码3-1】

   01  <script type="text/javascript">
   02       var i = 1;
   03       var j = 2;
   04       var sum = i + j;
   05       console.log("1 + 2 = " + sum);
   06       var p = NaN;
   07       var q = 123;
   08       var sumNaN = p + q;
   09       console.log("NaN + 123 = " + sumNaN);
   10       var x = Infinity;
   11       var y = 321;
   12       var sumInfinity = x + y;
   13       console.log("Infinity + 123 = " + sumInfinity);
   14       var sumX = Infinity + Infinity;
   15       console.log("Infinity + Infinity = " + sumX);
   16       var sumY = -Infinity + -Infinity;
   17       console.log("-Infinity + -Infinity = " + sumY);
   18       var sumZ = -Infinity + Infinity;
   19       console.log("-Infinity + Infinity = " + sumZ);
   20  </script>

关于【代码3-1】的分析如下:

第02~05行代码定义了两个变量(i和j),并通过加法运算符(+)进行了算术运算。其中,在第04行代码中就是通过加法运算符(+)将变量(i)和变量(j)进行算术相加运算;

第06~09行代码通过加法运算符(+)对特殊值(NaN)进行了算术运算。其中,第06行代码定义变量(p),并初始化赋值为特殊值(NaN);第08行代码尝试将变量(p)与一个具体数值进行算数相加运算,并将结果保存在变量(sumNaN)中;

第10~13行代码通过加法运算符(+)对特殊值(Infinity)进行了算术运算。其中,第10行代码定义了变量(x),并初始化赋值为特殊值(Infinity);第12行代码尝试将变量(x)与一个具体数值进行算数相加运算,并将结果保存在变量(sumInfinity)中;

第14~15行代码通过加法运算符(+)对特殊值(Infinity)和特殊值(Infinity)进行算术运算,并将结果保存在变量(sumX)中;

第16~17行代码通过加法运算符(+)对特殊值(-Infinity)和特殊值(-Infinity)进行了算术运算,并将结果保存在变量(sumY)中;

第18~19行代码通过加法运算符(+)对特殊值(-Infinity)和特殊值(Infinity)进行了算术运算,并将结果保存在变量(sumZ)中。

页面效果如图3.1所示。从第09行代码的输出结果来看,特殊值(NaN)与数值相加后的结果仍为(NaN);从第13行代码的输出结果来看,特殊值(Infinity)与数值相加后的结果也仍为(Infinity)。

图3.1 ECMAScript加法运算符(+)

另外,特殊值(Infinity)和特殊值(Infinity)相加后,结果仍为特殊值(Infinity);特殊值(-Infinity)和特殊值(-Infinity)相加后,结果仍为特殊值(-Infinity);而特殊值(-Infinity)和特殊值(Infinity)相加后,结果变化为特殊值(NaN),表示不是一个有效数值。

下面,再看一个应用ECMAScript加法(+)运算符进行字符串连接操作的代码示例(详见源代码ch03目录中ch03-js-operator-add-str.html文件)。

【代码3-2】

   01  <script type="text/javascript">
   02       var strA = "Hello";
   03       var strB = "EcmaScript";
   04       console.log(strA + " " + strB + "!");
   05       var i = 1;
   06       var strN = "8";
   07       console.log(i + strN);
   08       console.log(strN + i);
   09  </script>

页面效果如图3.2所示。从第04行代码的输出结果来看,加法运算符(+)也可以用于字符串连接操作;从第07和08行代码的输出结果来看,对字符串与数值使用加法运算符(+)进行连接操作时,数值类型会被转换为字符串类型,然后进行字符串连接操作。即使字符串为数值类的字符串(如第06行代码定义的变量),也不会与数值进行算术运算,这一点需要设计人员加以重视。

图3.2 ECMAScript加法运算符(+)连接字符串

3.1.3 减法运算符及表达式

ECMAScript语法中规定减法运算符使用符号“-”来表示,减法(-)运算符除了可以进行正常的数值运算外,还支持对类似“NaN”和“Infinity”特殊值的运算。

下面,来看一个应用ECMAScript减法(-)运算符的代码示例(详见源代码ch03目录中ch03-js-operator-minus.html文件)。

【代码3-3】

   01  <script type="text/javascript">
   02       var i = 2;
   03       var j = 1;
   04       var minusNumA = i - j;
   05       console.log("2 - 1 = " + minusNumA);
   06       var minusNumB = i.toString() - j;
   07       console.log('"2" - 1 = ' + minusNumB);
   08       var minusStr = "EcmaScript" - 123;
   09       console.log('"EcmaScript" - 123 = ' + minusStr);
   10       var p = NaN;
   11       var q = 123;
   12       var minusNaNA = p - q;
   13       console.log("NaN - 123 = " + minusNaNA);
   14       var minusNaNB = q - p;
   15       console.log("123 - NaN = " + minusNaNB);
   16       var x = Infinity;
   17       var y = 321;
   18       var minusInfinityA = x - y;
   19       console.log("Infinity - 321 = " + minusInfinityA);
   20       var minusInfinityB = y - x;
   21       console.log("321 - Infinity = " + minusInfinityB);
   22       var minusA = Infinity - Infinity;
   23       console.log("Infinity - Infinity = " + minusA);
   24       var minusB = -Infinity - -Infinity;
   25       console.log("-Infinity - -Infinity = " + minusB);
   26       var minusC = -Infinity - Infinity;
   27       console.log("-Infinity - Infinity = " + minusC);
   28       var minusD = Infinity - -Infinity;
   29       console.log("Infinity - -Infinity = " + minusD);
   30  </script>

关于【代码3-3】的分析如下:

第02~05行代码定义了两个变量(i和j),并通过减法运算符(-)进行了算术运算。其中,在第04行代码中就是通过减法运算符(-)将变量(i)和变量(j)进行算术相减运算;

第06~07行代码在第02~05行代码的基础上做了一点小变动,先将变量(i)转换为字符串类型,再通过减法运算符(-)与变量(j)进行算术相减运算;

第08~09行代码通过减法运算符(-)对一个字符串("ECMAScript")和数值(123)进行相减运算;

第10~15行代码通过减法运算符(-)对特殊值(NaN)进行了算术运算。其中,第10行代码定义了变量(p),并初始化赋值为特殊值(NaN);第12行和第14行代码分别尝试将变量(p)与一个具体数值进行减法运算;

第16~21行代码通过减法运算符(-)对特殊值(Infinity)进行了算术运算;其中,第16行代码定义了变量(x),并初始化赋值为特殊值(Infinity);第18行和第20行代码分别尝试将变量(x)与一个具体数值进行减法运算;

第22~23行代码通过减法运算符(-)对特殊值(Infinity)和特殊值(Infinity)进行了算术运算;

第24~25行代码通过减法运算符(-)对特殊值(-Infinity)和特殊值(-Infinity)进行了算术运算;

第26~27行代码通过减法运算符(-)对特殊值(-Infinity)和特殊值(Infinity)进行了算术运算;

第28~29行代码通过减法运算符(-)对特殊值(Infinity)和特殊值(-Infinity)进行了算术运算。

页面效果如图3.3所示。

图3.3 ECMAScript减法运算符(-) 2ED83nfVIKReb+VL7UQ6dt6RaZgdBuiENOkB5zEBiIY96F1jIL+3BHHO9YgXNQpq

点击中间区域
呼出菜单
上一章
目录
下一章
×