二柬泽、運(yùn)算符和邏輯分支

運(yùn)算符和邏輯分支

一窥翩、運(yùn)算符

1向楼、一元運(yùn)算符

  • 概述

    只能操作一個(gè)值的運(yùn)算符叫做一元運(yùn)算符

    var a = ++b; //加后取值先執(zhí)行加法運(yùn)算, 再取值
    
    var a = b++; //加前取值先取值, 再執(zhí)行加法運(yùn)算
    
  • 其他類(lèi)型應(yīng)用一元運(yùn)算符的規(guī)則

    var b = '89'; 
    
    b++; //90,數(shù)值字符自動(dòng)轉(zhuǎn)換成數(shù)值
    
    var b= 'ab'; 
    
    b++; //NaN,字符串包含非數(shù)值轉(zhuǎn)成NaN
    
    var b = false;
    
    b++;//1,false轉(zhuǎn)成數(shù)值0,累加就是1
    
    var b = 2.3; 
    
    b++; //3.3,直接加1
    

2、關(guān)系運(yùn)算符

[圖片上傳失敗...(image-58870f-1631947680114)]

  • 概述

    用于進(jìn)行比較的運(yùn)算符稱(chēng)作為關(guān)系運(yùn)算符

  • 關(guān)系運(yùn)算符如下:

    小于(<)、大于(>)、小于等于(<=)驼侠、大于等于(>=)、

    相等(==)谆吴、不等(!=)倒源、全等(恒等)(===)、不全等(不恒等)(!==)

  • 關(guān)系運(yùn)算符的比較規(guī)則:

    1. 數(shù)字和數(shù)字比較, 直接比較大小
    2. 數(shù)字和字符串比較, 字符串轉(zhuǎn)換為數(shù)字后再比較
    3. 字符串和字符串比較, 進(jìn)行字符的ASCII碼值比較
  • 字符與ASCII值互轉(zhuǎn)

    var str = "A";
    str.charCodeAt(); 
    var num = 97;
    String.fromCharCode(num);  // 'a'
    
  • 比較注意事項(xiàng):

    • 布爾值 ture=1, false=0 Number(true)
    • 只要不等于NaN, 就是true,其他有NaN的運(yùn)算都為false
    • 如果要恒等, 則必須值和類(lèi)型都要相等;
  • 關(guān)系運(yùn)算符(特殊值)

運(yùn)算 結(jié)果
null == undefined true
'NaN' == NaN false
5 == NaN false
NaN == NaN false
false == 0 true
true == 1 true
true == 2 false
undefined == 0 false
null == 0 false
'100' == 100 true
'100' === 100 false

3句狼、邏輯運(yùn)算符

  • 說(shuō)明

    邏輯運(yùn)算符通常用于布爾值的操作笋熬,一般和關(guān)系運(yùn)算符配合使用,有三個(gè)邏輯運(yùn)算符:邏輯與(AND)鲜锚、邏輯或(OR)、邏輯非(NOT)

[圖片上傳失敗...(image-2cd58c-1631947680114)]

  • 注意

    • 邏輯與&&運(yùn)算符屬于短路操作苫拍,顧名思義芜繁,如果第一個(gè)操作數(shù)返回是false,第二個(gè)數(shù)不管是true還是false都會(huì)返回false绒极。

    • 邏輯或||運(yùn)算符也是短路操作骏令。當(dāng)?shù)谝徊僮鲾?shù)的求值結(jié)果為true, 就不會(huì)對(duì)第二個(gè)操作數(shù)求值了垄提。

    • 短路效果

      var a = 1;
      console.log(a++ || true)
      console.log(a)
      console.log(true || a++)
      
  • 邏輯非(NOT):!

    • 概述

      邏輯非運(yùn)算符可以用于任何值榔袋。無(wú)論這個(gè)值是什么數(shù)據(jù)類(lèi)型,這個(gè)運(yùn)算符都會(huì)返回一個(gè)布爾值铡俐。它的流程是:先將這個(gè)值轉(zhuǎn)換成布爾值凰兑,然后取反,

    • 規(guī)則如下:

      • ?操作數(shù)是一個(gè)空字符串,返回true; 非空字符串, 返回false
      • ?操作數(shù)是數(shù)值0,返回true; 任意非0數(shù)值(包括 Infinity),返回false
      • ?操作數(shù)是NaN, 返回true
      • ?操作數(shù)是undefined, 返回true

4审丘、賦值運(yùn)算符與復(fù)合賦值運(yùn)算符

  • 概述:

    • 賦值運(yùn)算符用等于號(hào)(=)表示吏够,就是把右邊的值賦給左邊的變量。
  • 復(fù)合賦值運(yùn)算符通過(guò)x=的形式表示,x表示算術(shù)運(yùn)算符锅知。

    如:=播急、+=, -=, *=, /=, %=等

[圖片上傳失敗...(image-34b9fb-1631947680114)]

5、算數(shù)運(yùn)算符和其他運(yùn)算符:

  • 算數(shù)運(yùn)算符:+售睹,-,*, /, %(取余數(shù))

  • 三目運(yùn)算符: ?:

    字符串運(yùn)算符: 字符串運(yùn)算符只有一個(gè)桩警,即:“+”。它的作用是將兩個(gè)字符串相加昌妹。規(guī)則:至少一個(gè)操作數(shù)是字符串

  • 實(shí)例: 3>5?'大于':'不大于'

二捶枢、流程控制

1、共有三種基本結(jié)構(gòu):

  • 順序:從上朝下執(zhí)行的代碼就是順序

  • 分支(選擇):根據(jù)不同的情況捺宗,執(zhí)行對(duì)應(yīng)代碼

  • 循環(huán):重復(fù)做一件事情

2柱蟀、順序結(jié)構(gòu)

順序結(jié)構(gòu)是最簡(jiǎn)單的程序結(jié)構(gòu),它是由若干個(gè)依次執(zhí)行的處理步驟組成的蚜厉。如圖长已,A語(yǔ)句和B語(yǔ)句是依次執(zhí)行的,只有在執(zhí)行完A語(yǔ)句后昼牛,才能接著執(zhí)行B語(yǔ)句术瓮。

3、分支結(jié)構(gòu)

  • 概述

    在處理實(shí)際問(wèn)題時(shí)贰健,只有順序結(jié)構(gòu)是不夠的胞四,經(jīng)常會(huì)遇到一些條件的判斷,流程根據(jù)條件是否成立有不同的流向伶椿。如下圖所示辜伟,程序根據(jù)給定的條件P是否成立而選擇執(zhí)行A操作或B操作。這種先根據(jù)條件做出判斷脊另,再?zèng)Q定執(zhí)行哪一種操作的結(jié)構(gòu)稱(chēng)為分支結(jié)構(gòu)导狡,也稱(chēng)為選擇結(jié)構(gòu)。

  • IF單分支

    if條件判斷語(yǔ)句的寫(xiě)法:

    if(表達(dá)式){
      執(zhí)行語(yǔ)句
    }
    

    當(dāng)括號(hào)內(nèi)的表達(dá)式結(jié)果成立(為true時(shí))偎痛,則執(zhí)行大括號(hào)內(nèi)的語(yǔ)句旱捧,否則不執(zhí)行。

    • 注意

      if后面的()不能省略踩麦。

      一條執(zhí)行語(yǔ)句可以省略{}, 多條時(shí)不能省略{}, 建議不管是一條還是多條都寫(xiě)上{}

    • 簡(jiǎn)寫(xiě)

      if(0>1)
         console.log('大于')
      if(0>1) console.log('大于')
      
  • IF雙分支語(yǔ)句

    格式

    if(表達(dá)式){
      執(zhí)行語(yǔ)句1
    }else{
      執(zhí)行語(yǔ)句2
    }
    

    當(dāng)if括號(hào)內(nèi)的表達(dá)式結(jié)果成立枚赡,執(zhí)行執(zhí)行語(yǔ)句1,否則執(zhí)行執(zhí)行語(yǔ)句2;

    • 判斷一個(gè)年份是閏年還是平年谓谦;

      能被4整除而不能被100整除.(如2004年就是閏年,1800年不是.)

      能被400整除.(如2000年是閏年))

    • 簡(jiǎn)寫(xiě)

      if(0>1)
          console.log('大于')
      else
          console.log('不大于')
      
  • IF多分支語(yǔ)句

    if多分支語(yǔ)句的寫(xiě)法:

    if(表達(dá)式){
      執(zhí)行語(yǔ)句1
     } 
     else if(表達(dá)式2){
      執(zhí)行語(yǔ)句2
     }
     else if(表達(dá)式3){
      執(zhí)行語(yǔ)句3
     }
     else{
      執(zhí)行語(yǔ)句n
     }
    

    從上往下贫橙,滿(mǎn)足哪個(gè)條件就執(zhí)行其相對(duì)應(yīng)的語(yǔ)句,都不滿(mǎn)足時(shí)反粥,執(zhí)行最后的

    else

    的語(yǔ)句料皇,只能進(jìn)入其中之一

    • IF的嵌套

      將整個(gè)if語(yǔ)句塊插入另一個(gè)if語(yǔ)句塊中

    if (表達(dá)式1) {
         if (表達(dá)式2)  {
           if (表達(dá)式3){
                 語(yǔ)句;
           }
        else{
             語(yǔ)句;
         }
    }
      else{
            語(yǔ)句;
      }
    }
    

    注意:嵌套if時(shí)谓松,最好不要超過(guò)三層; 內(nèi)層的每一對(duì)if...else代碼要縮進(jìn)且對(duì)齊践剂;編寫(xiě)代碼時(shí)鬼譬,else要與最近的if配對(duì)。

4逊脯、switch語(yǔ)句

  • 格式

    switch(表達(dá)式) {
         case 常量1:語(yǔ)句; break;
         case 常量2:語(yǔ)句; break;
         case 常量n:語(yǔ)句; break;
         default:語(yǔ)句; break;
    }
    
  • 概述

    表達(dá)式的結(jié)果等于哪個(gè)case的常量优质,則執(zhí)行其后的語(yǔ)句,執(zhí)行完break就跳出switch結(jié)構(gòu)军洼,都不滿(mǎn)足則執(zhí)行default的語(yǔ)句巩螃。

  • break的作用

    是跳出switch結(jié)構(gòu),如果沒(méi)有break匕争,則繼續(xù)執(zhí)行下面分支的的語(yǔ)句(而不進(jìn)行判斷)避乏。

  • 注意case穿透,要加break

    switch的應(yīng)用場(chǎng)景:表達(dá)式為固定值,不能判斷范圍

5甘桑、循環(huán)結(jié)構(gòu)

  • 概述

    需要重復(fù)執(zhí)行同一操作的結(jié)構(gòu)稱(chēng)為循環(huán)結(jié)構(gòu)拍皮,即從某處開(kāi)始,按照一定條件反復(fù)執(zhí)行某一處理步驟跑杭,反復(fù)執(zhí)行的處理步驟稱(chēng)為循環(huán)體
    
  • 循環(huán)的分類(lèi)

    • while循環(huán)
    • do-while循環(huán)
    • for循環(huán)
      • for in

      • forEach

  • while循環(huán)語(yǔ)法格式:

    while(表達(dá)式)
    {
        執(zhí)行代碼;
    }
    注意:  1, while循環(huán)必須按照上述語(yǔ)法格式來(lái)寫(xiě), 只能更改表達(dá)式內(nèi)容和執(zhí)行代碼.
          2, 表達(dá)式可以是常量,變量或者其他表達(dá)式,該表達(dá)式會(huì)被強(qiáng)制轉(zhuǎn)換為boolean類(lèi)型, 可以理解表達(dá)式就是循環(huán)的條件.
          3, 執(zhí)行代碼可以有多行, {}所包含的稱(chēng)為循環(huán)體.
          4, 表達(dá)式不要一直是true, 避免死循環(huán).
          5. while循環(huán)的順序是: 先判斷表達(dá)式是否為true, 若true則執(zhí)行執(zhí)行代碼, 然后再繼續(xù)判斷表達(dá)式是否為true, ….  直到判斷表達(dá)式為false才會(huì)跳出循環(huán), 執(zhí)行while后面的代碼
    
    while循環(huán)一般會(huì)有: 循環(huán)初始值, 循環(huán)條件 和 循環(huán)變量增量(或者減量)
    do{
      
    }while();
    練習(xí):
    打印100以?xún)?nèi) 7的倍數(shù)
    打印100以?xún)?nèi)的奇數(shù)
    打印100以?xún)?nèi)所有偶數(shù)的和
    打印圖形
    * * * * * * * * * *
    * * * * * * * * * *
    * * * * * * * * * *
    * * * * * * * * * *
    
    • 實(shí)例

      左側(cè)正三角形

      var j=1;
      do{
        var I=1;
        do{
          document.write(i)
          I++
        }while(i<=j);
        document.write('<br>')
        j++
      }while(j<=9);
      
    • 右側(cè)倒三角形

      //右側(cè)倒三角線
      var j=9;
      do{
        //控制空格字符的輸出
        var k = 9-j;
        do{
          if(j==9){
            break;
          }
          document.write('*');
          k--;
        }while(k>=1);
        //輸出右側(cè)三角形的元素
        var i = j;
        do{
          document.write(i);
          I--;
        }while(i>=1);
        document.write('<br />'); //控制行的輸出
        j--;
      }while(j>=1);
      
  • for循環(huán)語(yǔ)法格式

    • 主體結(jié)構(gòu)
    for (表達(dá)式1; 表達(dá)式2;表達(dá)式3){
           執(zhí)行代碼;
    }
    
    • 實(shí)例
    for(var i=0;i<5;i++){
      console.log(i)
    }
    for循環(huán)將 循環(huán)初始值, 循環(huán)條件, 循環(huán)變量增量寫(xiě)在了一起
    注意: 三個(gè)表達(dá)式都是可選填寫(xiě), 但是如果后兩個(gè)不寫(xiě),會(huì)造成死循環(huán); 而第一個(gè)為初始化值,所以我們?nèi)齻€(gè)一般都要寫(xiě)上.
    
    • 簡(jiǎn)寫(xiě)
    var I=1;
    for(;;){
      if(i>100){
        break;
      }
      document.write(i+'<br />');
      i++;            
    }
    
    • 注意:
      • 表達(dá)式1:可寫(xiě)循環(huán)初始值, (可以不填)
      • 表達(dá)式2: 循環(huán)條件
      • 表達(dá)式3: 循環(huán)增量(減量)
      • 兩個(gè)分號(hào)必須寫(xiě).
  • For in 返回索引值

    for(var i in Array){
      console.log(i)
    }
    
  • forEach 返回值

    Array.forEach(function(arg){
      console.log(arg)
    });
    
  • break關(guān)鍵字

    • 在switch語(yǔ)句中使流程跳出switch結(jié)構(gòu)铆帽。

    • 在循環(huán)語(yǔ)句中使流程跳出當(dāng)前循環(huán)

      注意:

      如果已執(zhí)行break語(yǔ)句,就不會(huì)執(zhí)行循環(huán)體中位于break后的語(yǔ)句德谅。

      在多層循環(huán)中爹橱,一個(gè)break語(yǔ)句只向外跳一層

  • continue關(guān)鍵字

    只能在循環(huán)語(yǔ)句中使用,使本次循環(huán)結(jié)束窄做,即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句愧驱,接著進(jìn)行下次是否執(zhí)行循環(huán)的判斷。

    注意:

    • continue語(yǔ)句只能用在循環(huán)里椭盏。
    • 對(duì)于while和do-while循環(huán)组砚,continue語(yǔ)句執(zhí)行之后的動(dòng)作是條件判斷;對(duì)于for循環(huán)庸汗,隨后的動(dòng)作是變量更新惫确。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末手报,一起剝皮案震驚了整個(gè)濱河市蚯舱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌掩蛤,老刑警劉巖枉昏,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異揍鸟,居然都是意外死亡兄裂,警方通過(guò)查閱死者的電腦和手機(jī)句旱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)晰奖,“玉大人谈撒,你說(shuō)我怎么就攤上這事∝夷希” “怎么了啃匿?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蛆楞。 經(jīng)常有香客問(wèn)我溯乒,道長(zhǎng),這世上最難降的妖魔是什么豹爹? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任裆悄,我火速辦了婚禮,結(jié)果婚禮上臂聋,老公的妹妹穿的比我還像新娘光稼。我一直安慰自己,他們只是感情好逻住,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布钟哥。 她就那樣靜靜地躺著,像睡著了一般瞎访。 火紅的嫁衣襯著肌膚如雪腻贰。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,096評(píng)論 1 291
  • 那天扒秸,我揣著相機(jī)與錄音播演,去河邊找鬼。 笑死伴奥,一個(gè)胖子當(dāng)著我的面吹牛写烤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拾徙,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼洲炊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了尼啡?” 一聲冷哼從身側(cè)響起暂衡,我...
    開(kāi)封第一講書(shū)人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎崖瞭,沒(méi)想到半個(gè)月后狂巢,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡书聚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年唧领,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了藻雌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡斩个,死狀恐怖胯杭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情受啥,我是刑警寧澤歉摧,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站腔呜,受9級(jí)特大地震影響叁温,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜核畴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一膝但、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧谤草,春花似錦跟束、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至温学,卻和暖如春略贮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仗岖。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工逃延, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人轧拄。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓揽祥,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親檩电。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拄丰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容