You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过字符串参数获取对应变量?优化多分支代码

实现按参数直接返回对应变量的方案

你直接返回type肯定不行,因为type是字符串参数,不是对应变量的引用。要实现你想要的效果,最简洁易扩展的方式是用对象做映射——把每个type对应的配置值存在对象的键里,直接通过键名取值即可,多类型场景下比嵌套三元/if-else清爽太多。

先纠正你代码里的语法错误:原代码中const enable { color: 'blue' }缺少赋值符号=,正确写法是const enable = { color: 'blue' },下面的示例会修正这个问题。

具体实现方式

方式1:用单独映射对象(推荐,可读性高、易扩展)

function test2(type) {
  // 把所有类型对应的配置整合到一个映射对象中
  const configMap = {
    enable: { color: 'blue' },
    disabled: { color: 'red' },
    // 后续新增类型直接在这里加键值对就行,比如:
    // warning: { color: 'yellow' },
    // success: { color: 'green' }
  };
  
  // 按type取对应值,还可加默认值防止传入无效type
  return configMap[type] ?? configMap.disabled;
}

方式2:紧凑写法(适合简单场景)

如果不想单独声明映射变量,也可以直接返回对象的属性:

function test2(type) {
  return {
    enable: { color: 'blue' },
    disabled: { color: 'red' }
  }[type];
}

说明

  • 调用时test2('enable')会直接返回{ color: 'blue' },和原test1效果完全一致
  • 新增类型时,只需在映射对象里添加新的键值对,无需修改判断逻辑,维护成本极低
  • 加默认值(比如?? configMap.disabled)可以避免传入未定义的type时返回undefined

内容的提问来源于stack exchange,提问作者Mate-O

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 22:15:36