05-JavaScript基礎-算數運算子

極客江南發表於2017-08-11

運算子基本概念

  • 運算子是告訴程式執行特定算術或邏輯操作的符號。
    • 例如告訴程式, 某兩個數相加, 相減等

運算子分類

  • 按照功能劃分:

    • 算術運算子
    • 位運算子
    • 關係運算子與邏輯運算子
  • 運算子根據參與運算的運算元的個數分為

    • 單目運算
      • 單目運算:只有一個運算元 如 : i++ !
    • 雙目運算
      • 雙目運算:有兩個運算元 如 : a+b;
    • 三目運算
      • 三目運算也稱為問號表示式 a>b ? 1 : 0;

運算子的優先順序和結合性

  • 優先順序
    • JavaScript中,運算子的運算優先順序共分為15 級。1 級最高,15 級最低。
    • 在表示式中,優先順序較高的先於優先順序較低的進行運算。
    • 在一個運算量兩側的運算子優先順序相同時,則按運算子的結合性所規定的結合方向處理
運算子 描述
() 表示式分組
++ — – ~ ! 一元運算子
* / % 乘法、除法、取模
+ – + 加法、減法、字串連線
<< >> >>> 移位
< <= > >= 小於、小於等於、大於、大於等於
== != === !== 等於、不等於、嚴格相等、非嚴格相等
& 按位與
^ 按位異或
| 按位或
&& 邏輯與
|| 邏輯或
?: 條件
= += -= *= /= %= 賦值運算
, 多重求值
  • 江哥提示:一般情況下不需要死記硬背優先順序, 只需要記住()優先順序最高即可
  • 結合性

    • JavaScript中各運算子的結合性分為兩種,即左結合性(自左至右)和右結合性(自右至左)。
      • 算術運算子的結合性是自左至右,即先左後右
      例如表示式: x - y + z;
      則y 應先與“-”號結合,執行 x-y 運算,然後再執行+z 的運算。
      這種自左至右的結合 方向就稱為“左結合性”。
      
      • 而自右至左的結合方向稱為“右結合性”。
        最典型的右結合 性運算子是賦值運算子
        例如:如x = y = z = 10;
        由於“=”的 右結合性,應先執行z = 10; 再執行y = z 再執行x = y運算。
      
  • 優先順序

    • 先計算優先順序高的
        var res = 2 + 3 * 8;
        先算3 * 8, 再加上 2
      
    • 優先順序相同則左結合計算
      3*5/3*2
      先算3*5,然後再算除3,最後再乘以2
      

算術運算子

名稱 符號 說明
加法運算子 + 對兩個值進行加法運算,並將結果返回
減法運算子 對兩個值進行減法運算,並將結果返回
乘法運算子 * 對兩個值進行乘法運算,並將結果返回
除法運算子 / 對兩個值進行除法運算,並將結果返回
求餘運算子 (模運算子) % 對兩個值進行取餘運算,並將結果返回
  • 加法運算

    • 格式: Number1 + Number2;
      var res = 1 + 1;
      console.log(res); // 2
      
      var num1 = 10;
      var num2 = 20;
      var res2 = num1 + num2;
      console.log(res2); // 30
      
    • 非Number型別的值進行運算時,會將這些值轉換為Number然後在運算
      var result = true + 1;
      console.log(result); // 2
      result = true + false;
      console.log(result); // 1
      result = 2 + null; 
      console.log(result);// 2
      
    • 任何值和NaN做運算都得NaN
      var result = 2 + NaN;
      console.log(result); //NaN
      
    • 任何的值和字串做加法運算,都會先轉換為字串,然後再和字串做拼串的操作
      var result = 1 + "123";
      console.log(result); // 1123
      result = 2 + "true";
      console.log(result); // 2true
      
  • 減法運算

    • 格式: Number1 – Number2;
      var res = 1 - 1;
      console.log(res); // 0
      
      var num1 = 10;
      var num2 = 20;
      var res2 = num1 - num2;
      console.log(res2); // -10
      
      • 非Number型別的值進行運算時,會將這些值轉換為Number然後在運算
      var result = true - 1;
      console.log(result); // 0
      result = true - false;
      console.log(result); // 1
      result = 2 - null;
      console.log(result);// 2
      
    • 任何值和NaN做運算都得NaN
      var result = 2 - NaN;
      console.log(result); //NaN
      
    • 字串做減法也會轉換為Number
      var result = 2 - "1";
      console.log(result); // 1
      result = "2" - "1";
      console.log(result); // 1
      
  • 乘法運算

    • 格式: Number1 * Number2;
      var res = 2 * 2;
      console.log(res); // 4
      
      var num1 = 10;
      var num2 = 20;
      var res2 = num1 * num2;
      console.log(res2); // 200
      
      • 其它規律和減法一樣
        • 非Number型別的值進行運算時,會將這些值轉換為Number然後在運算
        • 任何值和NaN做運算都得NaN
        • 字串做乘法也會轉換為Number
  • 除法運算

    • 格式: Number1 / Number2;
      var res = 2 / 2;
      console.log(res); // 1
      
      var num1 = 10;
      var num2 = 20;
      var res2 = num1 / num2;
      console.log(res2); // 0.5
      
      • 其它規律和減法一樣
        • 非Number型別的值進行運算時,會將這些值轉換為Number然後在運算
        • 任何值和NaN做運算都得NaN
        • 字串做除法也會轉換為Number
  • 取餘運算

    • 格式: Number1 % Number2;
    • m%n 求餘,相當於m/n 獲取餘數
      var res = 10 % 3;
      console.log(res); // 1
      
      var num1 = 10;
      var num2 = 2.5;
      var res2 = num1 % num2;
      console.log(res2); // 0
      
      • 規律
        • n等於0 返回NaN
        • m等於0 結果為0
        • m>n 正常求餘 如:8%3 = 2
        • m<n 結果是m 如:2%4 = 2
        var result = 10 % 0;
        console.log(result); // NaN
        result = 0 % 10;
        console.log(result); // 0
        result = 2 % 10;
        console.log(result); // 2
        
      • 其它規律和減法一樣
        • 非Number型別的值進行運算時,會將這些值轉換為Number然後在運算
        • 任何值和NaN做運算都得NaN
        • 字串做取餘也會轉換為Number
  • Tips
  • 可以通過為一個值 -0 *1 /1來將其轉換為Number
    console.log(result); // 123
    result = true * 1;
    console.log(result); // 1
    result = null / 1;
    console.log(result); // 0

正負運算子

    • 正號
    • + 正號不會對數字產生任何影響
      var num = 123;
      num = +num;
      console.log(num); // 123
      
    • 對於非Number型別的值,會將先轉換為Number,然後再運算
      var bool = true;
      var res = +bool;
      console.log(res); // 1
      
      var str = "123";
      res = +str;
      console.log(res); // 123
      
      var str2 = "123abc";
      res = +str2;
      console.log(res); // NaN, 所以內部不是呼叫parseInt, 而是Number()函式
      
      var temp = null;
      res = +temp;
      console.log(res); // 0
      
  • 負號
    • – 負號可以對數字進行負號的取反
      var num = 123;
      num = -num;
      console.log(num); // -123
      

學習交流方式:
1.微信公眾賬號搜尋: 李南江(配套視訊,程式碼,資料各種福利獲取)
2.加入前端學習交流群:
302942894 / 289964053 / 11550038


相關文章