《JavaScript進階程式設計》閱讀筆記(六):ECMAScript中的運算子(二)

來源:互聯網
上載者:User
2.9.5、加性運算子

  加性運算子(即加號和減號)通常是最簡單的運算子,不過在ECMAScript中,每個加性運算子都有大量的特殊行為。

  1、加法運算子:

1 var iResult=1+2;
2 console.log(iResult);//outputs 3

  特殊性:

  • 某個運算數是NaN,結果為NaN
  • Infinity加Infinity,結果為Infinity
  • -Infinity加-Infinity,結果為-Infinity
  • Infinity加-Infinity,結果為NaN
  • 如果兩個運算數都是字串,把第二個字串串連到第一個字串上
  • 如果只有一個運算數是字串,把另一個運算數轉換為字串,結果是兩個字串串連成的字串

  樣本:

 1 var iResult2=NaN+1;
2 console.log(iResult2);//NaN
3
4 var iResult3=Infinity+Infinity;
5 console.log(iResult3);//Infinity
6
7 var iResult4=-Infinity-Infinity;
8 console.log(iResult4);//-Infinity
9
10 var iResult5="abc"+"bcd";
11 console.log(iResult5);//abcbcd
12
13 var iResult6=5+"5";
14 console.log(iResult6);//55

  2、減法運算子:

1 var iResult=2-1;
2 console.log(iResult);//1

  特殊性:

  • 某個運算數是NaN,結果為NaN
  • Infinity減Infinity,結果為NaN
  • -Infinity減-Infinity,結果為NaN
  • Infinity減-Infinity,結果為Infinity
  • -Infinity減-Infinity,結果為-Infinity
  • 如果兩個運算數都是字串,結果為NaN
  • 如果只有一個運算數是字串,把字串轉換為數字再進行運算

  樣本:

 1 var iResult2=NaN-1;
2 console.log(iResult2);//NaN
3
4 var iResult3=Infinity-Infinity;
5 console.log(iResult3);//NaN
6
7 var iResult4=-Infinity-(-Infinity);
8 console.log(iResult4);//NaN
9
10 var iResult5=-Infinity-Infinity;
11 console.log(iResult5);//-Infinity
12
13 var iResult6=Infinity-(-Infinity);
14 console.log(iResult6);//Infinity
15
16 var iResult7="abc"-"a";
17 console.log(iResult7);//NaN
18
19 var iResult8="5"-5;
20 console.log(iResult8);//0
21
22 var iResult9="a"-5;
23 console.log(iResult9);//NaN
2.9.6、關係運算子

  關係運算子<、>、<=、>=執行的是兩個數位比較運算,返回的是一個Boolean值。如果兩個運算元都是字串,則逐一比較兩個字串的ASC碼,如果只有一方是字串,則把字串轉換為數字後比較,樣本如下:

 1 var bResult=2<1;
2 console.log(bResult);//false
3
4 var bResult="B"<"a";
5 console.log(bResult);//true
6
7 var bResult="b"<"a";
8 console.log(bResult);//false
9
10 var bResult="13"<"2";
11 console.log(bResult);//true
12
13 var bResult=13<"2";
14 console.log(bResult);//false
15
16 var bResult=-1<"a";
17 console.log(bResult);//false

  第17行的代碼中,"a"被轉換為數字時返回的是NaN,任何包含NaN的關係運算都要返回false。

2.9.7、等性運算子

  1、等號和非等號

  在ECMAScript中,等號(==)及非等號(!=)都返回Boolean值。為確定兩個運算數是否相等,這兩個運算數都會進行類型轉換,轉換規則如下:

  • 如果一個運算數是Boolean值,在檢查相等性之前,把它轉換成數字值。false轉換成0,true轉換成1。
  • 如果一個運算數是字串,另一個運算數是數字,在檢查相等性之前,要嘗試把字串轉換成數字。
  • 如果一個運算數是對象,另一個是字串,在檢查相等性之前,要嘗試把對象轉換成字串。
  • 如果一個運算數是對象,另一個是數字,在檢查相等性之前,要嘗試把對象轉換成數字。

  在進行比較時,運算子還遵循還列規則:

  • 值null和undefined相等
  • 在檢查相等性時,不能把null和undefined轉換成其他值。
  • 如果某個運算數是NaN,等號將返回false,非等號將返回true。重要提示:即使兩個運算數都是NaN,等號仍返回false,因為根據規則,NaN不等於NaN。
  • 如果兩個運算數都是對象,那麼比較的是它們的引用值。如果兩個運算數把向同一個對象,那麼等號返回true,否則兩個運算數不等。

  樣本:

 1 console.log(null==undefined);//true
2 console.log("NaN"==NaN);//false
3 console.log(5==NaN);//false
4 console.log(NaN==NaN);//false
5 console.log(NaN!=NaN);//true
6 console.log(false==0);//true
7 console.log(true==1);//true
8 console.log(true==2);//false
9 console.log(undefined==0);//false
10 console.log(null==0);//false
11 console.log("5"==5);//true

  2、全等號和非全等號

  等號和非等號的同類運算子是全等號和非全等號。這兩個運算子所做的與等號和非等號相同,只是它們在檢查相等性前,不執行類型轉換。全等號由三個等號(===)表示,非全等號由驚嘆號加兩個等號(!==)表示,只有在無需類型轉換運算數就相等的情況下,才返回true。例如:

1 console.log("55"==55);//true
2 console.log("55"===55);//false
3 console.log("55"!=55);//false
4 console.log("55"!==55);//true
2.9.8、條件運算子

  條件運算子跟其他語言中的相同:varialbe=boolean_expression?true_value:false_value;

  樣本:

1 function Max(iNum1,iNum2){
2 return iNum1>=iNum2?iNum1:iNum2;
3 }
4 console.log(Max(1,3));//3
5 console.log(Max(3,1));//3
2.9.9、賦值運算子

  簡單的賦值運算子由等號(=)實現,只是把等號右邊的值賦予等號左邊的變數,例如:

1 var iNum=10;

  複合賦值運算是由乘性運算子、加性運算子或位移運算子加等號(=)實現的。這些賦值運算子是下列這些常見情況的縮寫形式:

1 var iNum=10;
2 iNum=iNum+10;
3
4 //等同於
5 var iNum=10;
6 iNum+=10;

  每種主要的算術運算及其他幾個運算都有複合賦值運算子:

  • 乘法/賦值(*=)
  • 除法/賦值(/=)
  • 模數/賦值(%=)
  • 加法/賦值(+=)
  • 減法/賦值(-=)
  • 左移/賦值(<<=)
  • 有符號右移/賦值(>>=)
  • 無符號右移/賦值(>>>=)
2.9.10、逗號運算子

  用逗號運算子可以在一條語句中執行多個運算。例如:

1 var iNum=1,iNum2=2,iNum3=3;

  逗號運算子最常用於變數聲明中。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.