ES6中有条件地分配常量的最佳方法是什么?

时间:2015-11-10 11:51:56

标签: ecmascript-6

我想根据条件为我的const validation分配一个值。

如果this.showRequired() == true 然后它应该是'required'

如果this.showError() == true 那么它应该是'error'

我当然知道我可以将它提取到函数或级联三元运算符,但第一个看起来代码膨胀,后者很难看。

有更好的方法吗? if-else表达式可能吗?

1 个答案:

答案 0 :(得分:24)

级联三元运算符对我来说很好看:

const validation = this.showRequired() ? 'required' : this.showError() ? 'error' : null

如果您认为此行太长,则可以拆分:

const validation = this.showRequired() ? 'required'
                   : this.showError() ? 'error'
                   : null

或者您可以改为使用&&||

const validation = (this.showRequired() && 'required') ||
                   (this.showError() && 'error')

至于将此代码移植到单独的函数中,您总是可以使用内联函数而不是创建另一个类方法:

const validation = (() => {
  if (this.showRequired()) {
    return 'required'
  } else if (this.showError()) {
    return 'error'
  }
})()

但是三元运算符无论如何都看起来更好,特别是如果它分成几行。