1. 程式人生 > >101_js筆記4_js的進位制 + 運算子 + 流程控制語句

101_js筆記4_js的進位制 + 運算子 + 流程控制語句

一,進位制

  • 16進位制的數字,則需要以0x開頭
    •    num = 0x18;
    •    num = 0xcf;
    •    num = 0xAacf;
  • 8進位制的數字,則需要以0開頭
    • num = 016;
  • 2進位制的數字,則需要以0b開頭
    • num = 0b1010;

二,運算子

  1. 運算子也叫操作符, 通過運算子可以對一個或多個值進行運算
  2. 按照功能劃分:
    1. 算術運算子,
    2. 位運算子,
    3. 關係運算符,
    4. 邏輯運算子
  3. 按照運算元個數劃分:
    1. 單目運算(只有一個運算元 如 : i++ !),
    2. 雙目運算(有兩個運算元 如 : a+b;),
    3. 三目運算(三目運算也稱為問號表示式 a>b ? 1 : 0;)

三,運算子的優先順序

四,算術運算子

  1. 和C語言不同的是JavaScript中整數除以整數結果是小數
    1.     var res4 = 10 / 3;
    2.     console.log(res4); // 3.3333
  2. 任何值和NaN做運算都得NaN
    1. var result = 2 + NaN;
    2. console.log(result); //NaN
  3. 非Number型別的值進行運算時,會將這些值轉換為Number然後在運算
    1. var result = true + 1; // + - * /  %
    2. console.log(result); // 2
    3. result = true + false;
    4. console.log(result); // 1
    5. result = 2 + null; 
    6. console.log(result);// 2
  4. 任何的值和字串做加法運算,都會先轉換為字串,然後再和字串做拼串的操作
    1. var result = 1 + "123";
    2. console.log(result); // 1123
    3. result = 2 + "true";
    4. console.log(result); // 2true
  5. 任何的值和字串做- * / %法運算, 都會先轉換為字串轉換為Number
    1. var result = 2 - "1"; // - * /  %
    2. console.log(result); // 1
    3. result = "2" - "1";
    4. console.log(result); // 1
  6. 取餘運算m%n, n等於0 返回NaN, 其它和C語言一樣
    1. var result = 10 % 0;
    2. console.log(result); // NaN

五,正負運算子

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

六,賦值運算子

  1. 賦值運算子左邊只能是變數
    1. var str = 110;
      220 = str; // 錯誤寫法
  2. 複合賦值運算子
    1.  += 加後賦值 變數+=表示式 如:a+=1;即a=a+1
    2.  -= 減後賦值 變數-=表示式 如:a-=1;即a=a-1


七,關係運算符

  1. 對於數值和非數值進行比較時,會將其轉換為數值然後再比較
  2. 如果符號兩側的值都是字串時,不會將其轉換為數字進行比較, 而會分別比較字串中字元的Unicode編碼
  3. ==和===:
    1. ==:判斷值是否相等,會進行資料型別轉換;
    2. ===:判斷值和型別是否相等,不會進行資料型別轉換;
  4. != 和!==:
    1. !=:判斷值是否不相等,會進行資料型別轉換;
    2. !==:判斷值和型別是否不相等,不會進行資料型別轉換;
  5. null、undefined 、NaN比較
    1. console.log(null == 0); // false
      console.log(undefined == 0); // false
      // 永遠不要判斷兩個NaN是否相等
      console.log(NaN == NaN); // false
      
      /*
       * 可以通過isNaN()函式來判斷一個值是否是NaN
       *    如果該值是NaN則返回true,否則返回false
       */
      var num = NaN;
      console.log(isNaN(num)); // true
      
      // undefined 衍生自 null, 所以返回true
      console.log(null == undefined); // true;
      console.log(null === undefined); // false;
      
      

       

八,邏輯運算子

  1. 邏輯與:&&
  2. 邏輯或:||
  3. 邏輯非:!
  4. 對於非Boolean型別的數值, 邏輯與會自動將其轉換為Boolean型別來判斷

九,流程控制語句

  1. 選擇結構
    1. 選擇結構if
    2. 選擇結構switch
      1. case判斷是否相等時是全等於(===),而不是等於(==),也就是說既會判斷型別是否相等又會判斷值是否相等
      2. 和C語言不同的是, JavaScript中case後可以是常量也可以是變數
  2. 迴圈結構:
    1. while,
    2. do while,
    3. for
  3. 三大跳轉結構:
    1. JavaScript中沒有提供C語言中的goto語句, 但是其它的三大跳轉和C語言中一模一樣
    2. return:立即結束所在函式
    3. break:
      1. 立即跳出所在switch語句或迴圈語句, 離開作用範圍沒有意義
      2. break關鍵字只能用於迴圈語句和switch語句, 在其它地方沒有意義
    4. continue:
      1. 立即跳出所在迴圈語句, 離開作用範圍沒有意義 
      2. continue後面的語句永遠不會被執行
      3. 只能用於迴圈結構, 在其它地方沒有意義