是否存在一种更好的方法/编码样式,可以在不同的条件下使用if语句不执行不同的功能?
我已经用以下方式在JavaScript中进行编码:(例如,处于不同条件下的函数可能会使用来自API的不同提取方法)
if(answer == 'a'){
foo()
if(answer == 'b'){
bar()
if(answer == 'c'){
bar_2()
if(answer == 'd'){
foo_3()
我曾经考虑过使用eval()
,但这是一个好方法吗?例如,创建一个对象时,将键作为条件,将函数名称作为属性。
conditions:{
a: 'foo',
b: 'bar',
c: 'foo_2',
d: 'bar_2',
}
并像eval(this.conditions[a])
但是我也听说使用eval
很难进行测试。
答案 0 :(得分:2)
是的,您可以使用函数构建条件对象并调用它们:
function foo(){...}
function bar(){...}
var conditions : {
'a': foo,
'b': bar,
}
conditions[answer]()
注意:如果您不知道自己在做什么,请尽量不要使用eval
,这会带来安全风险
答案 1 :(得分:1)
您使用键指向功能标识符。您最好使用键来指向功能:
conditions:{
a: () => {
// body of foo
},
b: () => {
// body of bar
},
c: () => {
// body of foo_2
},
d: () => {
// body of bar_2
}
}
conditions[ your_key ]();