js中邏輯運算符&&、||同時存在的思考

在掘金上碰到一個有趣的問題 true || false && false這個結(jié)果是啥
答案是true

why?
最初的結(jié)論是:&&的邏輯運算符的優(yōu)先級高于||
然而最后結(jié)論是短路運算的結(jié)果。

image.png

短路運算

&&表達式1 && 表達式2

表達式1 為true時,返回表達式2
表達式1 為false時,返回表達式1,且不會執(zhí)行表達式2

||表達式1 || 表達式2

表達式1 為true時,返回表達式1,且不會執(zhí)行表達式2
表達式1 為false時,返回表達式2

又去查了一堆資料,又碰到個奇怪的問題。

true || alert(2) && false        // 結(jié)果為true,alert(2)并沒有執(zhí)行

如果按優(yōu)先級來不應(yīng)該會執(zhí)行alert(2)嗎?

再來個問題:

false && false || alert(1)      // 結(jié)果彈窗1,執(zhí)行了alert(1)

如果按從左往右的順序執(zhí)行,短路運算生效,應(yīng)該不會執(zhí)行alert(1)

經(jīng)過與一位Java同事的討論,最后得出如下結(jié)論:
遇到||運算符,先去左邊的表達式得出結(jié)果,如果結(jié)果為true,則不會去執(zhí)行右邊的表達式,則短路運算生效;如果結(jié)果為false,則去執(zhí)行右邊的表達式,再去根據(jù)兩邊的結(jié)果去執(zhí)行||運算符

當同時存在多個||時,從左到右,一一執(zhí)行上述規(guī)則。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 運算符是處理數(shù)據(jù)的基本方法,用來從現(xiàn)有的值得到新的值。JavaScript 提供了多種運算符,本章逐一介紹這些運算...
    許先生__閱讀 717評論 0 3
  • 運算符是處理數(shù)據(jù)的基本方法,用來從現(xiàn)有的值得到新的值。JavaScript 提供了多種運算符,本章逐一介紹這些運算...
    徵羽kid閱讀 784評論 0 0
  • 前言: 最近在學習javascript中數(shù)據(jù)類型、運算符,以及運算符優(yōu)先級等相關(guān)基礎(chǔ)知識,相對簡單、基礎(chǔ)但也很重要...
    饑人谷_遠方閱讀 869評論 0 3
  • 算術(shù)運算符 JavaScript 共提供10個算術(shù)運算符,用來完成基本的算術(shù)運算。 加法運算符:x + y 減法運...
    guyigg閱讀 1,396評論 0 1
  • 老舍原名舒慶春,字舍予。1899年生于北京,滿族人。1918年北京師范學院畢業(yè)。1930年七月老舍應(yīng)聘到...
    小青杏閱讀 357評論 0 0

友情鏈接更多精彩內(nèi)容