javaScript常用運算子和操作符總結

來源:互聯網
上載者:User

標籤:

 

javaScript常用運算子和操作符總結

類別

操作符

算術操作符 +、 –、 *、 /、 %(模數)
字串操作符 + 字串串連   +=字串串連複合
布爾操作符 !、 &&、  || 
一元操作符 ++ 、 -- 、  +(一元加)、    -(一元減)
關係比較操作符 < 、 <= 、 >  、>=、   !=  、 == 、  === 、  !== 
按位操作符 ~ 按位非    &按位與     | 按位或     ^按位異或    <<左移    >>有符號右移      >>>無符號右移
賦值操作符 = 、   複合賦值(+=、-=、*=、%=)   複合按位賦值(~=、&=、|=、^=、<<=、>>=、>>>=)
對象操作符 .屬性訪問、[]屬性或數組訪問、 new調用建構函式常見對象、delete變數屬性刪除、void(返回undefined)、in判斷屬性、instanceof原型判斷
其它操作符 ?: 條件操作符、,逗號操作符、()分組操作、typeof類型操作符

 

注意事項:

1. 算數操作符

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

1.2 除號(/)和模數(%)並不會區分整數和浮點數,都會自動轉化為浮點數,比如 9 / 2 = 4.5 而不是4,5.3 % 3 = 2.3 而不是2。

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

 

2. 字串操作符

2.1 字串串連符號(+)相當於concat()函數,會將操作資料轉化為字串,再串連。在字串和數值型進行+號運算時,會將數值型轉為字串。

 

3. 布爾操作符

3.1   &&邏輯與常被應用判斷一個變數或屬性是否有定義,例如:

if(object && object.name && object.name = ‘name‘){    //這裡會首先判斷object存在,不存在的話就不會解析object.name從而阻止錯誤的發生,同樣,也只有object.name存在,才會去比較這個值。}
3.2   ||邏輯或常被應用提供預設值的情況,和?問號操作符類似。例如
function Fn(obj){  obj = obj || {};//這裡如果調用Fn未傳入obj,則會自動給obj賦值為undefined,然後因為undefined的相應Boolean值為false,//所以會將一個Null 物件{}賦值給obj,如果調用傳入了obj,則因為任意對象的Boolean值為true,//所以就不會取後面的{},從而達到給obj一個預設值{}的效果。}

 

4. 一元操作符

4.1 前置自增(減)會先自增(減)再參與其它運算,後置先參與其它運算再自增(減)。

4.2 對於不是Number類型的值進行自增自減時會先將其隱式轉換為Number類型,然後再自增(減)。

 

5. 關係比較操作符

5.1 比較雙方都為字串時,則會從前往後逐個比較字元編碼值,只要有較大者就終止比較,不會往後進行。

5.2 比較雙方有一個Number類型,則會將非Number類型資料轉為Number類型值再比較。

5.3 操作符是對象時,調用valueOf()(如果沒有,就調用toString()),再將結果進行比較。

5.4 任何數和NaN比較都會返回false.

 

6. 對象操作符

6.1 通過[]可以訪問名稱是一個變數或含有特殊字元的屬性,名稱為普通確定值時用.點號訪問對象屬性。

6.2 new 調用建構函式建立一個對象,在建構函式內部的this被指向這個新建立的對象

6.3 delete,刪除變數或屬性,(變數可以看成是全域對象或執行環境的一個屬性)

 

7. 其它操作符

7.1 typeof是一個操作符,而不是函數,返回一個字串值,(有些會根據瀏覽器極其版本不同而略有不同)

類型

typeof值

類型

typeof值

類型

typeof值

Undefined ‘undefined‘ Null ‘object‘ Boolean ‘boolean‘
Number ‘number‘ String ‘string‘ 內建Function對象的執行個體 ‘function‘

typeof一般用來判斷單一資料型別,如果是物件類型,因為大部分返回的都是object,實際一般不會使用;

而instanceof的判斷也需要滿足同一個內容相關的條件,否則也會出錯,

 

8.常用方式:

8.1 使用一元加號+直接隱式轉換為Number類型。  例如:console.info(+true);  //1,一元操作符,轉換為數值1

8.2 使用加Null 字元串可直接隱式轉為String類型。     例如:console.info(‘‘+true);  //true,隱式轉換為字串‘true‘

8.3 使用雙重邏輯非!!隱式轉換為Boolean類型。      例如:var a=‘a’;   console.info(!!a);   //true  兩次取反,將其隱式轉換為boolean類型

8.4 使用邏輯與&&來檢測對象或其屬性是否存在並進行後續操作。   例如:object && object.name && object.name = ‘name‘;

8.5 使用邏輯或||來給函數參數提供預設值,也常用?問號條件操作符提供預設值。  例如:  obj = obj || {};

8.6 使用花括弧{}來定義對象字面量,JSON資料格式和代碼塊。   例如: var obj = {};

8.7 使用中括弧[]來定義數組字面量,JSON資料格式,訪問數組,訪問名稱是變數或特殊字元的屬性。  例如: obj[this.index]

8.8 按位元運算可應用一些場所:如不使用中間變數直接交換兩個數值、判斷奇數和偶數、MD5加密等等。

 

 

 

javaScript常用運算子和操作符總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.