根据条件执行不同的功能,而无需if语句

时间:2018-09-14 10:21:53

标签: javascript performance coding-style

是否存在一种更好的方法/编码样式,可以在不同的条件下使用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很难进行测试。

2 个答案:

答案 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 ]();
相关问题