如何通过字符串参数获取对应变量?优化多分支代码
实现按参数直接返回对应变量的方案
你直接返回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
相关产品推荐
相关产品推荐

