官术网_书友最值得收藏!

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減法運算符(-)

主站蜘蛛池模板: 盐津县| 哈巴河县| 萨迦县| 红桥区| 土默特右旗| 竹溪县| 原阳县| 句容市| 陵水| 威信县| 湖南省| 九寨沟县| 观塘区| 沅江市| 神农架林区| 丰原市| 威远县| 临邑县| 奇台县| 双峰县| 滨海县| 开鲁县| 济宁市| 从化市| 云林县| 吴川市| 家居| 义马市| 呼图壁县| 峡江县| 宿州市| 班戈县| 商都县| 扬州市| 商河县| 仁怀市| 稻城县| 五家渠市| 浦江县| 沅陵县| 平果县|