JavaScript進階程式設計(3)基本概念 中

來源:互聯網
上載者:User

標籤:表示   amp   asc   移位   code   情況   blog   區分   大於等於   

  操作符

 ECMA-262描述了一組用於操作資料值的操作符,包括算數操作符、位操作符、關係操作符和相等操作符。他們能夠適應很多值,例如字串、數字值、布爾值甚至對象。在應用對象時,相應的操作符都會調用對象的valueof()和toString()方法。取得可以操作的值。

 

 一元操作符:只能操作一個值。

 1.遞增和遞減操作符。   

  前置性(++i):++位於要操作的變數之前 變數先加1,然後賦值給左邊的變數。

  後值性(i++):++位於要操作的變數之後 ,先賦給左邊的變數,然後再+1。

  遞減同理;

var  num1 = 2;var  num2 = 20;var  num3 = --num1 + num2;           //等於21var  num4 =  num1 + num2;            //等於21var num5  = num1-- +num2;            //等於22 var num6  = num1 + num2;             //等於21

他們不僅適用於整數,還可以用於字串、布爾值、浮點數值和對象。應用不同的值有不同的規則。

  1.   一個包含有效數字字元的字串時,先將其轉換為數字值,再執行加減 1 的操作。字串變數變成數值變數。
  2.   一個不包含有效數字字元的字串時,將變數的值設定為NaN。字串變數變成數值變數。
  3.   布爾值為false,先將其轉換為 0 再執行加減 1 的操作。布爾值變數變成數值變數。
  4.   布爾值true,先將其轉換為 1 再執行加減 1 的操作。布爾值變成數值變數。
  5.   浮點數值時,執行加減 1 的操作。
  6.   對象時,先調用對象的valueof()方法以取得一個可供操作的值,然後對該值應用前述規則。如果結果是NaN,則在調用toString()方法後再應用前述規則。物件變數變成數值變數。
var s1 = "2";var s2 = "z";var b = false;var f = 1.1;var o = {  valueOf: function(){  return - 1;}};s1++;                           //值變成數值3s2++;                           //值變成NaNb++;                            //值變成數值1f--;                            //值變成0.10000000000000009(浮點舍入錯誤)o--;                            //值變成數值-2

 

 2.一元加和減操作符

以一個加號(+)表示,放在數值前面,對數值不會產生任何影響。非數值前面,會對這個值進行轉換。

以一個減號(-)表示,放在數值前面,變成負數。非數值前面,對這個值進行轉換,變成負數。

 

 位操作符

  按位非(NOT) 波浪線(~)表示,結果是返回數值的反碼。

  按位於(AND) 和號字元(&)表示,只在兩個數值的對應位都是 1 時才返回 1 ,任何一位是 0 ,結果都是 0 。

  按位或(OR)   豎線符號(|)表示,有一個位是 1 的情況下就返回 1 ,而只有在兩個位都是 0 的情況下才返回 0 。

  按位異或(XOR) 插入符號(^)表示,兩個數值對應位上只有一個 1 時才返回 1 ,如果對應的兩位都是 1 或都是 0 ,則返回 0 。

  左移  兩個小於符號(>>)表示,會將數值的所有位向左移動指定的位元。不會影響運算元的符號位

  有符號右移  兩個大於符號(<<)表示,會將數值向右移動,會用符號位填充所有空位。

  無符號右移  三個大於符號(<<<)表示,位元向右移位,直接右移,對於正數,結果和>>相同,對於負數,會把負數的二進位補碼當成正數的二進位碼處理

 

布爾操作符

 邏輯非(NOT):歎號(!)表示,將它的運算元轉換為一個布爾值,然後再對其求反。

 

 同時使用兩個邏輯非操作符,可以將值轉換為真正的布爾值。

 

邏輯與(AND):兩個和號(&&)表示。

 當兩個運算元相應的Boolean值均為true時,返回true;有一個false,都會返回false。

 短路操作:如果第一個運算元能夠決定結果,那麼就不會再對第二個運算元求值。

 

邏輯或(AND):兩個豎線符號(||)表示。

當兩個運算元相應的Boolean值均為false時,返回false;有一個true,都會返回true。

短路操作:第一個操作結果為true,就不會對第二個運算元求值了。

 

計算操作符

  乘法操作符由一個星號(*)表示,計算兩個數值的乘積。

  除法操作符由一個斜線符號(/)表示,執行第二個運算元除第一個運算元的計算。

  求模(餘數)操作符由一個百分比符號(%)表示。執行常規的除法計算,返回除得的餘數

  加性操作符(+)

    如果是數值,執行常規的加法計算。

    如果有字串,則會拼接起來。添加圓括弧(),就可以對數值執行算術計算,然後再將結果與字串拼接起來。

 減法操作符(-)

   如果是數值,執行常規的減法計算,

  如果是其他,則會轉換,在進行計算

 

1、除了加(+)之外,如果運算元不是Number類型,會自動調用Number()轉換為Number類型再進行計算。

2、對於加減(+-),除了作為算術運算子。還可以作為一元操作符(見上)。當然,由於字串操作中對加號(+)的重載,還可以用於將任意數值(的字串)相連,這也是第1點中為什麼要除了加(+),它在含有非Number類型值時,會將所有運算元轉換為字串相串連。

3、與一般類C語言不同,在ES中,除(/)和模數(%)並不會區分整數和浮點數,比如 5 / 2 = 2.5 而不是2,5.3 % 3 = 2.3 而不是2。

4、任意運算,只要運算元含NaN,結果就是NaN。但並不是結果為NaN就一定有一個運算元為NaN,比如0/0也返回NaN。

5、對於含無窮Infinity的運算,規定比較多,這裡就不列舉了,可以參考原書,或者自行測試。

 

關係操作符

小於(<)、大於(>)、小於等於(<=)和大於等於(>=)對兩個值進行比較,都會返回一個布爾值。

 1.如果兩個運算元都是數值,則執行數值比較。

 2.如果兩個運算元都是字串,則比較相對應的字元編碼值。

 3、操作符是對象時,調用valueOf()(如果沒有,就調用toString()),再將結果按上面規則比較。

 4、任意數和NaN比較返回false。

 

相等操作符

 等號(==) 不等於(!=) 先轉換運算元,然後再比較它們的相等性。

全等(===)  不全等(!==)不會轉換運算元,直接比較。

      a===b則一定有a==b,而a!=b則一定有a!==b。

 

條件操作符

variable = boolean_expression ? true_value : false_value;

 該運算式主要是根據 boolean_expression 的計算結果有條件地為變數賦值。如果 Boolean_expression 為 true,就把 true_value 賦給變數;如果它是 false,就把 false_value 賦給變數。

 

賦值操作符(=)  右則的值賦給左側的變數。

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

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

 

逗號操作符

 使用逗號操作符可以在一條語句中執行多個操作。

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

 多用於聲明多個變數。

 

JavaScript進階程式設計(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.