switch 和 if 的 小差异

文章讨论了在处理applytype时,switch基于严格模式,if支持类型检查,展示了两者在实际应用中的区别。

switch 和 if的区别

let applytypeText = "";
    switch (detailObj.applytype) {
      case 10:
        applytypeText = "新增";
        break;
      case 20:
        applytypeText = "更改";
        break;
      case 30:
        applytypeText = "借用";
        break;
      default:
        applytypeText = "";
    }

<FormItem
 label="申领方式:"
  {...layoutOpt}
   required={false}
  errorMsg={getFieldError("AppMethod")}
>
    <FormControl
        {...getFieldProps("applytype", {
            validateTrigger: "onBlur",
            initialValue: applytypeText,
        })}
    />
</FormItem>
applytypeText 值, 不渲染到页面上
    let newApplytype = '';

    if (detailObj.applytype == 30) {
      newApplytype = '借用';
    } else if (detailObj.applytype == 20) {
      newApplytype = '更换'
    } else if (detailObj.applytype == 10) {
      newApplytype = '新增'
    }

<FormItem
 label="申领方式:"
  {...layoutOpt}
   required={false}
  errorMsg={getFieldError("AppMethod")}
>
    <FormControl
        {...getFieldProps("applytype", {
            validateTrigger: "onBlur",
            initialValue: newApplytype,
        })}
    />
</FormItem>
newApplytype值, 不渲染到页面上
有什么区别?

switch属于对字符串和数字 在严格模式下进行 判断, 得到的结果是 applytypeText = '' // 空字符串

而if判断 可以对 类型进行判断,则用 === 全等符号(及严格模式) 该if判断为 不对类型进行校验, == 不全等符号(非严格模式)

得到的结果 分为 三种 30/借用 20/更改 10/新增

### 语法结构 - **switch 语句**:结构较为固定,以 `switch` 关键字开头,后跟一个表达式,然后是多个 `case` 分支一个可选的 `default` 分支。每个 `case` 分支检查表达式是否等于某个特定值,如果匹配则执行相应代码块。例如: ```java int num = 2; switch (num) { case 1: System.out.println("Number is 1"); break; case 2: System.out.println("Number is 2"); break; default: System.out.println("Number is neither 1 nor 2"); } ``` - **if 语句**:有多种形式,如简单的 `if` 语句、`if-else` 语句嵌套的 `if-else` 语句。以 `if` 关键字开头,后跟一个布尔表达式,根据表达式的真假决定是否执行相应代码块。例如: ```java int num = 2; if (num == 1) { System.out.println("Number is 1"); } else if (num == 2) { System.out.println("Number is 2"); } else { System.out.println("Number is neither 1 nor 2"); } ``` ### 适用数据类型 - **switch 语句**:支持的数据类型有限,包括 `byte`、`short`、`int`、`char`、枚举类型、`String` 类型以及基本数据类型的包装类(借助自动拆箱机制)[^1]。 - **if 语句**:适用于任何布尔表达式,因此可以处理各种数据类型的比较,不受数据类型的严格限制。例如,可以比较对象引用、浮点数等。 ### 性能差异 - **switch 语句**:当 `case` 分支较多且条件是离散的常量值时,`switch` 语句的性能通常较好。因为 `switch` 语句在编译时会生成一个跳转表,通过直接跳转来执行相应的代码块,查找效率较高。 - **if 语句**:对于复杂的条件判断,尤其是涉及范围判断或逻辑组合时,`if` 语句的性能可能更优。但如果 `if-else` 链很长,每次都需要依次判断每个条件,效率会降低。 ### 使用场景 - **switch 语句**:适用于对一个变量与多个固定常量值进行比较的场景,如菜单选择、状态判断等。代码结构清晰,易于阅读维护。 - **if 语句**:适用于复杂的条件判断,如范围判断(`x > 10 && x < 20`)、逻辑组合(`(a == 1 || b == 2) && c != 3`)等。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值