07-JavaScript基礎(chǔ)-關(guān)系運(yùn)算符和邏輯運(yùn)算符

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

  • 為什么要學(xué)習(xí)關(guān)系運(yùn)算符?

    • 默認(rèn)情況下,我們?cè)诔绦蛑袑懙拿恳痪湔_代碼都會(huì)被執(zhí)行佛掖。但很多時(shí)候,我們想在某個(gè)條件成立的情況下才執(zhí)行某一段代碼
    • 這種情況的話可以使用條件語句來完成涌庭,但是學(xué)習(xí)條件語句之前芥被,我們先來看一些更基礎(chǔ)的知識(shí):如何判斷一個(gè)條件成不成立。
  • JavaScript中的真假性

    • 在JavaScript中坐榆,條件成立稱為“真”拴魄,條件不成立稱為“假”,因此席镀,判斷條件是否成立就是判斷條件的“真假”匹中。
    • 在JavaScript已經(jīng)給我們定義好了一個(gè)Boolean類型的值, 取值是true和false, true代表真, false代表假
    • 而接下來我們要學(xué)習(xí)的關(guān)系運(yùn)算符它的返回值正好就是Boolean類型的值, 也就是說關(guān)系運(yùn)算符的返回值要么是true,要么是false
  • 關(guān)系運(yùn)算符

    • 在程序中經(jīng)常需要比較兩個(gè)量的大小關(guān)系,以決定程序下一步的工作。比較兩個(gè)量的運(yùn)算符稱為關(guān)系運(yùn)算符豪诲。
序號(hào) 運(yùn)算符 結(jié)合性
1 > 大于 左結(jié)合
2 < 小于 左結(jié)合
3 >= 大于等于 左結(jié)合
4 <= 小于等于 左結(jié)合
5 == 判斷值是否相等 左結(jié)合
6 != 判斷值是否不相等 左結(jié)合
7 === 判斷值和類型是否相等 左結(jié)合
8 !== 判斷值和類型是否不相等 左結(jié)合
  • 簡(jiǎn)單示例
    var a, b;
    a = 10;
    b = 10;
    console.log(a > b); // false
    console.log(a < b); // false
    console.log(a >= b); // true
    console.log(a <= b); // true
    console.log(a == b); // true
    console.log(a != b); // false

  • 特殊示例

    • 對(duì)于非數(shù)值進(jìn)行比較時(shí)顶捷,會(huì)將其轉(zhuǎn)換為數(shù)字然后在比較

      console.log(1 > true); //false
      console.log(1 >= false); //true
      console.log(1 > "0"); //true
      console.log(1 > null); //true
      
      
    • 如果符號(hào)兩側(cè)的值都是字符串時(shí),不會(huì)將其轉(zhuǎn)換為數(shù)字進(jìn)行比較, 而會(huì)分別比較字符串中字符的Unicode編碼

    • Unicode編碼轉(zhuǎn)換地址

      // a的Unicode編碼是:0061
      // b的Unicode編碼是:0062
      console.log("a" < "b");//true
      
      // 比較多位時(shí)則是從前往后一位一位比較
      // 第一位相同比較第二位, 直到比較到不一樣或者結(jié)束為止
      // c的Unicode編碼是:0063
      console.log("ab" < "ac");//true
      
      
    • null屎篱、undefined 服赎、NaN比較

      console.log(null == 0); // false
      console.log(undefined == 0); // false
      // 永遠(yuǎn)不要判斷兩個(gè)NaN是否相等
      console.log(NaN == NaN); // false
      
      /*
       * 可以通過isNaN()函數(shù)來判斷一個(gè)值是否是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;
      
      // == 判斷值是否相等
      // == 會(huì)進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換
      console.log("123" == 123); // true
      // === 判斷值和類型時(shí)候同時(shí)相等
      // === 不會(huì)進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換
      console.log("123" === 123); // false
      
      

-Tips: 利用Unicode編碼可以在控制臺(tái)和網(wǎng)頁中輸出一些牛逼的符號(hào)

// 在控制臺(tái)中直接使用Unicode編碼即可
console.log("\u2764"); // ?
// 在網(wǎng)頁中需要以&#開頭, 然后將十六進(jìn)制2764轉(zhuǎn)換為十進(jìn)制
<div>&#10084</div>


邏輯運(yùn)算符

  • 為什么要學(xué)習(xí)邏輯運(yùn)算符?
    • 有時(shí)候交播,我們需要在多個(gè)條件同時(shí)成立的時(shí)候才能執(zhí)行某段代碼

    • 比如:用戶只有同時(shí)輸入了QQ和密碼重虑,才能執(zhí)行登錄代碼,如果只輸入了QQ或者只輸入了密碼秦士,就不能執(zhí)行登錄代碼缺厉。這種情況下,我們就要借助于JavaScript提供的邏輯運(yùn)算符隧土。

    • JavaScript中提供了三種邏輯運(yùn)算符:

        &&(與運(yùn)算)
        ||(或運(yùn)算)
        !(非運(yùn)算)
      
      

邏輯與

  • 格式: 條件A && 條件B

  • 運(yùn)算結(jié)果:

    • 只有當(dāng)條件A和條件B都成立時(shí)提针,結(jié)果才為true;其余情況的結(jié)果都為false次洼。因此关贵,條件A或條件B只要有一個(gè)不成立,結(jié)果都為false
    • 口訣:一假則假
  • 邏輯與運(yùn)算過程

    • 總是先判斷條件A是否成立

    • 如果條件A成立卖毁,接著再判斷條件B是否成立:如果條件B成立,“條件A && 條件B”的結(jié)果就為true,如果條件B不成立亥啦,結(jié)果就為false

    • 如果條件A不成立炭剪,就不會(huì)再去判斷條件B是否成立:因?yàn)闂l件A已經(jīng)不成立了,不管條件B如何結(jié)果肯定是false

      //如果兩個(gè)值都是true則返回true
      var result = true && true;
      
      //只要有一個(gè)false翔脱,就返回false
      result = true && false;
      result = false && true;
      result = false && false;
      
      
  • 邏輯與短路現(xiàn)象

      //第一個(gè)值為true奴拦,會(huì)檢查第二個(gè)值
      true && alert("這哥們來了!届吁!");
    
      //第一個(gè)值為false错妖,不會(huì)檢查第二個(gè)值
      false && alert("這哥們不會(huì)來了!疚沐!");
    
    
  • 注意點(diǎn):

    • 對(duì)于非Boolean類型的數(shù)值, 邏輯與會(huì)將其悄悄咪咪轉(zhuǎn)換為Boolean類型來判斷

    • 如果條件A不成立, 則返回條件A的數(shù)值本身

    • 如果條件A成立, 不管條件B成不成立都返回條件B數(shù)值本身

      var result =  "123" && "abc";
      console.log(result); // "abc"
      result =  "123" && 0;
      console.log(result); // 0
      result =  null && 0;
      console.log(result); // null
      
      

邏輯或

  • 格式: 條件A || 條件B

  • 運(yùn)算結(jié)果:

    • 當(dāng)條件A或條件B只要有一個(gè)成立時(shí)(也包括條件A和條件B都成立)暂氯,結(jié)果就為true;只有當(dāng)條件A和條件B都不成立時(shí)亮蛔,結(jié)果才為false
    • 口訣:一真為真
  • 邏輯或運(yùn)算過程

    • 總是先判斷條件A是否成立

    • 如果條件A成立痴施,就不會(huì)再去判斷條件B是否成立:因?yàn)闂l件A已經(jīng)成立了,不管條件B如何結(jié)果肯定是1究流,也就是true

    • 如果條件A不成立辣吃,接著再判斷條件B是否成立:如果條件B成立,“條件A || 條件B”的結(jié)果就為true芬探,如果條件B不成立神得,結(jié)果就為false

      //兩個(gè)都是false,則返回false
      var result = false || false;
      
      //只有有一個(gè)true偷仿,就返回true
      result = true || false;
      result = false || true ;
      result = true || true ;
      
      
  • 邏輯或短路現(xiàn)象

      //第一個(gè)值為false哩簿,則會(huì)檢查第二個(gè)值
      false || alert("123");
    
      //第一個(gè)值為true,則不再檢查第二個(gè)值
      true || alert("123");
    
    
  • 注意點(diǎn):

    • 對(duì)于非Boolean類型的數(shù)值, 邏輯與會(huì)將其悄悄咪咪轉(zhuǎn)換為Boolean類型來判斷

    • 如果條件A不成立, 則不管條件B成不成立都返回條件B數(shù)值本身

    • 如果條件A成立, 則返回條件A的數(shù)值本身

      var  result =  null || 0;
      console.log(result); // 0
      
      result =  "123" || "abc";
      console.log(result); // "123"
      result =  "123" || 0;
      console.log(result); // "123"
      
      

邏輯非

  • 格式: ! 條件A

  • 運(yùn)算結(jié)果:

    • 其實(shí)就是對(duì)條件A進(jìn)行取反:若條件A成立炎疆,結(jié)果就為false卡骂;若條件A不成立,結(jié)果就為true形入。也就是說:真的變假全跨,假的變真。

    • 口訣:真變假,假變真

      var bool1 = true;
      var res1 = !bool1;
      console.log(res1); // false
      
      var bool2 = false;
      var res2 = !bool2;
      console.log(res2); // true
      
      
  • 注意點(diǎn):

    • 對(duì)一個(gè)值進(jìn)行兩次取反亿遂,它不會(huì)變化

      var bool = true;
      var res = !!bool;
      console.log(res); // true
      
      
    • 對(duì)非布爾值進(jìn)行元素浓若,則會(huì)將其轉(zhuǎn)換為布爾值,然后再取反

      var num = 10;
      var res = !num; // 先將10轉(zhuǎn)換為true, 然后再取反
      console.log(res); // false
      
      
    • 所以, 要想將其它類型轉(zhuǎn)換為Number類型除了Boolean()函數(shù), 還可以使用 !!數(shù)值;

    • 值得注意的是!!數(shù)值;的形式,實(shí)現(xiàn)原理和Boolean()函數(shù)一樣

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蛇数,一起剝皮案震驚了整個(gè)濱河市挪钓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌耳舅,老刑警劉巖碌上,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倚评,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡馏予,警方通過查閱死者的電腦和手機(jī)天梧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來霞丧,“玉大人呢岗,你說我怎么就攤上這事∮汲ⅲ” “怎么了后豫?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長突那。 經(jīng)常有香客問我挫酿,道長,這世上最難降的妖魔是什么陨收? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任饭豹,我火速辦了婚禮,結(jié)果婚禮上务漩,老公的妹妹穿的比我還像新娘拄衰。我一直安慰自己,他們只是感情好饵骨,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布翘悉。 她就那樣靜靜地躺著,像睡著了一般居触。 火紅的嫁衣襯著肌膚如雪妖混。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天轮洋,我揣著相機(jī)與錄音制市,去河邊找鬼。 笑死弊予,一個(gè)胖子當(dāng)著我的面吹牛祥楣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播汉柒,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼误褪,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了碾褂?” 一聲冷哼從身側(cè)響起兽间,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎正塌,沒想到半個(gè)月后嘀略,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恤溶,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年屎鳍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宏娄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片问裕。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡逮壁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出粮宛,到底是詐尸還是另有隱情窥淆,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布巍杈,位于F島的核電站忧饭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏筷畦。R本人自食惡果不足惜词裤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鳖宾。 院中可真熱鬧吼砂,春花似錦、人聲如沸鼎文。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拇惋。三九已至周偎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間撑帖,已是汗流浹背蓉坎。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胡嘿,地道東北人蛉艾。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像灶平,于是被迫代替她去往敵國和親伺通。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

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