2.5 運算子及運算子的優先順序;2.6 語句

|惜取少年時發表於2020-09-28

2.5 運算子及運算子的優先順序

通過運算子,可以對一個或者多個值進行運算
    比如typeof就是運算子,可以來獲得一個值的型別,返回值以字串的型別返回
    
1.算數運算子(二元運算子)
    先將非number值轉化成number再運算(除了字串加法)
    +   對於字串有拼串操作 任何值和字串做加法,都會先轉化成字串,然後再進行拼串
    -
    *
    /   此處與C語言不同,C語言中,整數/整數是整除符號,js中就是除號
    %
2.一元運算子
    + 正號
    - 負號
    對於非Number型別變數,加上一個正號可以直接轉換成Number型別變數(原理和Number函式一樣),如果不能轉換則變成NaN(隱式型別轉換)
3.自增和自減(與C語言類似)
    ++
    --
4.邏輯運算子
    JS中為我們提供了三種邏輯運算子
    !   非
        為任意的資料型別做兩次非運輸,即可將其轉化為布林值,原理與Boolean函式一樣
    &&  與
    ||  或
    &&和||具有短路效應

    對於非布林值進行與或運算,會先將其轉化為布林值,然後再運算,最後返回原值
        與運算:
            如果第一個值為true,則必然返回第二個值
            如果第一個值為false,則必然返回第一個值
        或運算
            如果第一個值為true,則必然返回第一個值
            如果第一個值為false,則必然返回第二個值
        這是由於短路效應
5.賦值運算
    =
    +=
    *=
    /=
6.關係運算子
    通過關係運算子可以比較兩個值之間的大小關係
    關係成立返回true,關係不成立返回false
    >
    <
    >=
    <=
    非數值之間的情況:
        非數值比較時,會先轉化為數值,然後再返回布林值
        任何值和NaN做任何比較都是false
        如果符號兩端的值都是字串,不會將其轉換成數字進行比較
            會按照字串之間的比較規則比較,字串比較規則跟java(Unicode)一樣
            比較中文沒有意義
            如果要比較兩個數字字串的內容大小時,一定要將一端的字串型別轉換成數值型別
    ==
    例如:
        console.log(10==4);//false
        console.log("1"==1);//true
        console.log("1"==true);//true
        console.log(null==0);//false
        做==比較時,大部分情況會先轉換成數值
        undefined衍生自null
            所以這兩個值做相等判斷時,會返回true
        NaN不和任何值相等,包括它本身
            判斷一個值是否是NaN:通過isNaN函式
    != 不相等
    與相等==相反
    不相等也會對變數進行自動型別轉換
    ===
        全等,用來判斷兩個值是否全等,不會做型別轉換
    !==
        不全等,用來判斷兩個值是否不全等,不會做型別轉換
7.條件運算子
    三元運算子
    語法
        條件句?語句1:語句2;
        先判斷條件句,如果該值為true,則執行語句1,並返回執行結構
                   如果該值為false,則執行語句2,並返回執行結構
        //獲取a和b的最大值
        var max=a>b?a:b;
        //獲取a、b、c的最大值
        var max=a>b?(a>c?a:c):(b>c?b:c);//不推薦使用,不方便閱讀,要寫就一定要帶括號
8.逗號運算子
    使用逗號運算子可以分割多個語句,一般用於多個變數的宣告
9.運算子的優先順序
    參考JS運算表,若優先順序高,則計算優先順序高的;若優先順序一樣,則從左到右計算
    可以使用()改變優先順序

在這裡插入圖片描述

2.6 語句

程式由一條條語句構成
在JS中可以使用{}來為語句進行分組
    同一個{}中的語句稱為一組語句,也叫程式碼塊
    它們要麼都執行,要麼都不執行
    在程式碼塊的後邊就不用再寫分號了
JS中的程式碼塊,只具有分組的作用,沒有其他的用途

1.流程控制語句(與C語言類似)
    1.條件判斷語句
    2.條件分支語句
    3.迴圈語句
2.條件判斷語句,if語句
    1.語法1:
      if(條件表示式)
          語句或語句塊
    2.語法2:
      if(條件表示式)
          語句或者語句塊
      else
          語句或者語句塊
    3.語法3:(只會有一個程式碼塊被執行,一旦執行就會跳出if語句)
      if(條件表示式)
          語句或語句塊
      else if(條件表示式)
          語句或語句塊
      else if(條件表示式)
          語句或語句塊
      else if(條件表示式)
          語句或語句塊
      else if(條件表示式)
          語句或語句塊
      else
          語句或語句塊
3.條件分支語句,switch-case語句
    1.語法:
        switch(表示式){
            case 表示式:
                語句或者語句塊
                break;
            case 表示式:
                語句或者語句塊
                break;
            case 表示式:
                語句或者語句塊
                break;
            case 表示式:
                語句或者語句塊
                break;
            case 表示式:
                語句或者語句塊
                break;
            default:
                語句或者語句塊
                break;
        }
    2.執行流程:
        在執行時依次將case後的表示式的值和switch後的表示式的值進行全等比較
            如果比較結果為true,則從當前case處開始執行程式碼
            如果比較結果為false,則繼續進行比較
    3.使用break可以退出switch語句,不使用break的用法與C語言類似
    4.使用if-else if-else也能代替switch語句
4.迴圈語句
    while迴圈
    do...while迴圈
    for迴圈
    巢狀for迴圈
    **補充:質數判斷:
        判斷質數比較難,則判斷是否是合數;正難則反
        Math.sqrt(97)   //97的開方
5.break和continue
    outer:......break outer;跳出多重迴圈
    outer:......continue outer;

相關文章