首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript 函數中多個 if 語句邏輯差異:條件合併 vs 獨立判斷完整解析

     編輯:程式設計綜合問答

代碼對比

版本 A:單一 if-else 含複合條件


function show(a) {
    if (displayNone || srcBottom) { // OR 條件
        display = 'block'; src = 'top.png';
    } else {
        display = 'none';  src = 'bottom.png';
    }
}

版本 B:兩個獨立 if-else


function show(a) {
    if (displayNone) { display = 'block'; } else { display = 'none'; }
    if (srcBottom)   { src = 'top.png'; } else { src = 'bottom.png'; }
}

真值表分析 (初始狀態:display=block, src=bottom.png)

displayNonesrcBottom版本 A 結果版本 B 結果
FFelse 分支 → display=none, src=bottomif1:F→none, if2:F→bottom → 同
FTif 分支 → display=block, src=topif1:F→none, if2:T→top → **display 不同**
TFif 分支 → display=block, src=topif1:T→block, if2:F→bottom → **src 不同**
TTif 分支 → display=block, src=topif1:T→block, if2:T→top → 同

結論

  • **版本 A**:任一條件為真即觸發「展開/顯示頂部箭頭」邏輯,兩者**強綁定**。
  • **版本 B**:顯示狀態與圖片來源**獨立控制**,互不影響。
  • 若需求為「摺疊面板:展開時箭頭向上,摺疊時箭頭向下」,**版本 A 符合直覺**,版本 B 會產生「面板關閉但箭頭向上」等異常狀態。

最佳實踐:狀態機思維


const STATES = { OPEN: { display: 'block', src: 'top.png' },
                 CLOSED: { display: 'none', src: 'bottom.png' } };

function toggle(a) {
    const el = document.getElementById('A'+a);
    const img = document.getElementById('pic'+a);
    const isOpen = el.style.display !== 'none';
    const next = isOpen ? STATES.CLOSED : STATES.OPEN;
    el.style.display = next.display;
    img.src = next.src;
}
  • 集中管理狀態,消除條件分支錯誤。
  • 易於擴展動畫、無障礙屬性 (ARIA)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved