JavaScript基本概念(操做符)

一元操做符javascript

一元操做符在處理全部的非數值時,至關於將該值通過Number()轉換成數值,如 +"12" 將把 "12" 字符串轉換爲數字。java

位操做符函數

    1. 負數在計算機上以二進制補碼的形式儲存,補碼等於原碼的反碼加1,ECMAScript在以二進制字符串形式輸出一個負數時,咱們看到的只是這個負數絕對值的二進制碼前面加上一個符號(而不是輸出32位二進制)如:
      var num = -18;
      alert(num.toString(2));  // "-10010"
      

        

    2. 對特殊的NaN和Infinity值應用位操做符時,這兩個值都會被當成0來處理。
    3. 進行有符號的右移(>>)操做時,其左邊以符號位的值來填充空位,進行無符號的右移(>>>)操做時,以0來填充空位.

 

布爾操做符編碼

邏輯非spa

   對非布爾類型的值進行邏輯非操做時,會先使用Boolean()將值轉換爲布爾類型。對象

邏輯與blog

    1. 屬於短路操做,且並不必定返回布爾類型。
    2. 若是第一個操做數用Boolean()函數能夠轉換爲true時,返回第二個操做數。
    3. 若是第一個操做數是false,null,NaN,undefined時,返回第一個操做數。

邏輯或ip

    1. 原理跟邏輯與差很少。
    2. 咱們能夠利用下面的例子來避免爲變量賦null或undefined值,如:
var myObject = preferredObject || backupObject

  其中若第一個變量存在則優先賦予myObject第一個變量,否則賦予第二個變量字符串

 

乘性操做符it

注:若是參與乘性計算的某個操做符不是數值時,後臺會先使用Number()轉型函數將其轉換爲數值。

乘法

    1. 若是有一個操做數是NaN,則結果是NaN;
    2. 若是是Infinity與0相乘,則結果是NaN;
    3. 若是Infinity與非0數值相乘,則結果是Infinity或-Infinity;
    4. 若是是Infinity與Infinity相乘,則結果是Infinity。

除法

    1. 若是有一個操做數是NaN,則結果是NaN;
    2. 若是是Infinity被Infinity除,則結果是NaN;
    3. 若是是零被零除,則結果是NaN;
    4. 若是是非零的有限數被零除,則結果是Infinity或-Infinity;
    5. 若是是Infinity被任何非零數值除,則結果是Infinity或-Infinity。

求模

    1. 若是被除數是無窮大值而除數是有限大值,則結果是NaN;
    2. 若是被除數是有限大的數值而除數是零,則結果是NaN;
    3. 若是是Infinity被Infinity除,則結果是NaN;
    4. 若是被除數是有限大的數值而除數是無窮大的數值,則結果是被除數;
    5. 若是被除數是0,則結果是0。

 

加性操做符

加法

若是有一個操做數是字符串,則將另外一個操做數使用String()轉型函數轉換爲字符串,而後將兩個字符串拼接起來;

減法

若是操做數是非數值,後臺調用Number()轉型函數先將其轉換爲數值在進行運算。

 

關係操做符

  1. 若是兩個操做數是數值,則執行數值比較;
  2. 若是兩個操做數都是字符串,則比較兩個字符串對應的字符編碼值;
  3. 若是一個操做數是數值,則後臺將使用Number()函數將其轉換爲數值再比較;
  4. 若是一個操做數是對象,則調用對象的valueOf()方法,用獲得的結果按照前面的規則進行比較,若是對象沒有valueOf方法,則調用toString()方法,並用獲得的結果進行比較。
  5. NaN做爲操做數時,NaN < 3 和 NaN >= 3 皆返回false。

 

相等操做符

注:相等和不相等---先轉換再比較,全等和不全等---僅比較而不轉換

相等和不相等

    1. null和undefined是相等的;
    2. 若是隻有一個操做數是數值,則將另外一個操做數轉換爲數值再比較(偏向於比較數字);
    3. 若是兩個操做數都是對象,則比較它們是否是同一個對象。若是兩個操做數都指向同一個對象,則相等操做符返回true。

條件操做符

以下所示:error這個變量未定義,可是並未拋出錯誤。

abc == true ? 12 : error

 

in運算符

  in運算符但願它的左操做數是一個字符串或能夠轉換爲字符串,但願他的右操做數是一個對象,若是右側的對象擁有一個名爲左操做數值的屬性名,那麼表達式返回true。

 

instanceof運算符

  instanceof運算符但願左操做數是一個對象,右操做數標識對象的類。若是左側的對象是右側類的實例,則表達式返回true。全部的對象都是Object的實例。若是instanceof的左操做數不是對象的話,instanceof返回false,若是右操做數不是函數,則拋出一個類型錯誤異常。

相關文章
相關標籤/搜索