js小技巧 (if else 的多种写法)

博客介绍了JS里if else的使用技巧,包含常规使用方式以及方式1和方式2,为开发者提供了不同的实现思路,有助于提升代码编写效率。

常规

if (status===1) {
  return 'a'
} else if(status===2) {
  return 'b'
} else if(status===3) {
  return 'c'
} else if(status===4){
  return 'd'
} else if(status===5){
  return 'e'
} else {
  return 'f'
}

方式1

function filterNature (val) {
      let status = val
      let mapData = new Map([
        [1, ['a']],
        [2, ['b']],
        [3, ['c']],
        [4, ['d']],
        [5, ['e']],
        [6, ['f']]
      ])
      const getStatus = status => {
        let arrStatus = mapData.get(status)
        return arrStatus[0]
      }
      return getStatus(status)
    }
    let name = filterNature(2)
    console.log(name)

方式2

function test (val) {
      let obj = {
        1: 'a',
        2: 'b',
        3: 'c',
        4: 'd',
        5: 'e',
        6: 'f'
      }
      return obj[val]
    }
    let name1 = test(1)
    console.log(name1)
<think>我们正在讨论if-else if-else语句的逻辑关系与执行流程。根据引用[1]和引用[2],我们可以总结如下: 1. **执行流程**: - 首先判断`if`条件,如果为真,则执行对应的代码块,然后跳过后续的`else if`和`else`。 - 如果`if`条件为假,则检查下一个`else if`条件,如果为真,则执行该`else if`的代码块,然后跳过后续分支。 - 如果所有的`if`和`else if`条件都不满足,则执行`else`代码块(如果有的话)。 2. **多个条件**:可以有多个`else if`分支,但只有一个`else`分支(且必须放在最后)。 3. **嵌套使用**:在任何一个分支的代码块中,都可以再嵌套其他的`if-else`语句(引用[2]提到嵌套if语句)。 4. **高级写法**:引用[3]提到了一种高级写法(例如三元运算符或对象映射),但这里我们主要讨论基本结构。 5. **实际应用**:引用[4]展示了在微信小程序中如何使用条件判断(`wx:if`和`wx:else`),其逻辑与常规的`if-else`类似。 下面用流程图和代码示例详细说明: ### 流程图(简化) ``` 开始 | |---> [条件1] 成立? ---> 执行代码块1 ---> 结束 | | | 不成立 | | |---> [条件2] 成立? ---> 执行代码块2 ---> 结束 | | | 不成立 | | |---> [条件3] 成立? ---> 执行代码块3 ---> 结束 | | | 不成立 | | |---> 执行else代码块 ---> 结束 ``` ### 代码示例(C语言) ```c #include <stdio.h> int main() { int score; printf("请输入分数: "); scanf("%d", &score); if (score >= 90) { printf("优秀\n"); } else if (score >= 80) { // 隐含条件:score<90 printf("良好\n"); } else if (score >= 60) { // 隐含条件:score<80 printf("及格\n"); } else { // 以上条件都不满足:score<60 printf("不及格\n"); } return 0; } ``` ### 执行说明 1. 如果输入95,满足`score>=90`,输出"优秀",然后跳过后续所有分支。 2. 如果输入85,不满足`score>=90`(因为85<90),但满足`score>=80`,输出"良好"。 3. 如果输入65,不满足前两个条件,但满足`score>=60`,输出"及格"。 4. 如果输入59,所有条件都不满足,执行`else`分支,输出"不及格"。 ### 注意事项 - `else if`的数量没有限制,但应避免过多,否则可读性下降。 - `else`是可选的,但只能有一个且必须放在最后。 - 条件表达式是从上到下依次判断的,一旦某个条件满足,后面的条件不再判断(引用[2]提到“一旦找到为真的条件,就执行与它关联的语句,该阶梯的其他部分就被忽略了”)。 ### 高级替代方案 如引用[3]所示,可以使用三元运算符或对象映射(在支持的语言中)来简化多分支条件,但复杂的逻辑仍然需要`if-else if-else`结构。 ### 引用总结 - 多分支条件语句从上至下依次判断[^1][^2]。 - 最后的`else`作为默认分支[^2]。 - 在特定框架(如微信小程序)中,条件渲染语法类似(`wx:if`和`wx:else`)[^4]。 §§相关问题§§ 1. 如何避免多层嵌套的if-else结构? 2. 在哪些情况下使用switch语句比if-else if-else更合适? 3. 如何优化复杂的条件判断逻辑以提高可读性? 4. 在函数式编程中如何替代条件分支语句? 5. 条件分支语句对程序性能有何影响?</think>### if-else if-else 语句的逻辑关系与执行流程 在编程中,`if-else if-else` 结构是一种**多分支条件判断**语句,其执行流程遵循严格的**自上而下、顺序判断**原则。以下是其核心逻辑关系: #### 执行流程图解 ``` 开始 │ ├─ 检查 if(条件1) → 成立 → 执行代码块1 → 结束 │ │ │ └─ 不成立 │ │ │ ├─ 检查 else if(条件2) → 成立 → 执行代码块2 → 结束 │ │ │ │ │ └─ 不成立 │ │ │ │ │ ├─ 检查 else if(条件3) → 成立 → 执行代码块3 → 结束 │ │ │ │ │ │ │ └─ 不成立 │ │ │ ... │ │ │ │ │ └─ 所有条件均不成立 → 执行 else 代码块 → 结束 ``` #### 关键特性(引用[1][2]) 1. **顺序执行**:条件判断严格按书写顺序进行,一旦找到第一个为`true`的条件,立即执行对应代码块并**跳过后续所有分支**。 ```javascript let x = 15; if (x > 20) { console.log("大于20"); // 条件1:不成立 } else if (x > 10) { console.log("大于10"); // 条件2:成立 → 执行此块 → 跳过后续 } else if (x > 5) { console.log("大于5"); // 不会执行 } else { console.log("其他值"); // 不会执行 } ``` 2. **互斥性**:每个分支相互排斥,最多只有一个代码块会被执行(引用[2]:"一旦找到为真的条件,就执行与它关联的语句,该阶梯的其他部分就被忽略了")。 3. **else 的默认作用**:所有条件都不满足时执行`else`块(引用[2]:"如果所有的条件都不为真,则执行最后的else语句")。 ```javascript let hour = 22; if (hour < 12) { console.log("上午"); } else if (hour < 18) { console.log("下午"); } else { console.log("晚上"); // 输出"晚上" } ``` #### 特殊注意事项 1. **条件范围设计** 条件应按**从严格到宽松**的顺序排列: ```javascript // 错误顺序(永远进不到第二个分支) if (age >= 18) { ... } else if (age >= 16) { ... } // 永远不会执行 // 正确顺序 if (age >= 18) { ... } // 最严格条件 else if (age >= 16) { ... } // 次严格条件 else { ... } ``` 2. **与嵌套 if 的区别** `else if`本质是`else{ if... }`的简写,但逻辑更清晰: ```javascript // 等效写法 if (条件1) { ... } else { if (条件2) { ... } // 等同于 else if } ``` 3. **无 else 的情况** 当所有条件均不满足且无`else`时,程序不执行任何操作: ```javascript let score = 55; if (score > 90) console.log("A"); else if (score > 80) console.log("B"); // 55不满足任何条件 → 无输出 ``` #### 实际应用示例(微信小程序 - 引用[4]) ```html <view wx:if="{{temperature > 30}}">高温天气</view> <view wx:elif="{{temperature > 20}}">舒适天气</view> <view wx:else>低温天气</view> ``` - 当`temperature=35`时显示"高温天气" - 当`temperature=25`时显示"舒适天气" - 当`temperature=15`时显示"低温天气" #### 高级优化技巧(引用[3]) 对于简单分支,可使用三元表达式或对象映射替代: ```javascript // 原始写法 if (b == 1) a = 1; else if (b == 2) a = 2; else a = 3; // 优化写法 const map = {1:1, 2:2}; a = map[b] || 3; // 若b非1/2则返回3 ``` ### 总结执行流程 1. 按顺序检查每个`if`/`else if`条件 2. 执行**第一个满足条件**对应的代码块 3. 若所有条件均不满足,执行`else`块 4. **立即退出**整个条件结构(后续分支不再检查)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值