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


 

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,
//所以會將一個空對象{}賦值給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 使用加空字符串可直接隱式轉為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加密等等。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM