单线缩写为非箭头功能?

时间:2017-07-27 23:18:51

标签: javascript ecmascript-6

有时,主要是在课堂上,我需要做一个单行函数。

例如:

class Blah {
    getVisibilityAnimValue() { return this.state.isVisible ? 100 : 0 }
}

在ES6中是否有友好的方式?我试图省略周围的曲线并省略返回,但它不起作用。

2 个答案:

答案 0 :(得分:1)

没有。这是创建箭头函数的确切原因之一。

答案 1 :(得分:1)

  

在ES6中是否有友好的方式?

不,没有。我认为您已经知道,为了使用this来引用调用实例,您不能使用箭头函数(根据如何使用词法this而不是this它被称为)。因此,您必须使用传统的ES6方法定义。因此,您需要大括号{},而您需要return

ES6类语法至少为您节省了ES5方案:

Blah.prototype.getVisibilityAnimValue = function() {...}
  

我试图省略周围的卷曲并省略退货,但它不起作用。

是的,仍然需要这些。

如果您有很多方法可以像这样工作并使用相同的逻辑,那么您可以将逻辑分解为共享函数。

// define this once and then use it many places
function zVal(val) {
     return val ? 0 : 100;
}

getVisibilityAnimValue() { return zVal(this.state.isVisible) }

但是,对于这么简单的事情,这是否可以说是更好的"因为它现在涉及一个额外的函数调用,并且使它更难以看到(一目了然)它的作用。