【问题标题】:improve the js code based on es lint基于eslint改进js代码
【发布时间】:2016-08-03 05:04:16
【问题描述】:

我正在使用以下代码工作,但我们使用的是 ESlint,它会发出警告:

no-unused-expression 期望一个赋值或函数调用,而是看到了表达式

我怎样才能避免这种情况?

_createNew: function(Filecontent, config) {
    var self = this;
    config.position ? self._insertAfter(Filecontent, config) :
        self._addAsLast(Filecontent, config);
    return Filecontent;
},

当我尝试将 return 放在开头时它不起作用...有什么想法吗?

【问题讨论】:

  • 请。有利于将来接触该代码的每个人(包括您):只需使用 if/else。使用三元运算符没有意义。
  • 三元运算符将返回一个值,并且必须接收该值。我只是想都没想就回答了。

标签: javascript ternary-operator eslint


【解决方案1】:

代替你的三元:

config.position
  ? self._insertAfter(Filecontent, config)
  : self._addAsLast(Filecontent, config);

您应该使用 if/else 语句。我知道你的方式是单行的,但它并不更具可读性,并且存在 eslint 规则是有原因的。

if (config.position) {
  self._insertAfter(Filecontent, config)
} else {
  self._addAsLast(Filecontent, config);
}

还有几行代码,但对于将使用此代码库的每个人来说都更具可读性。

【讨论】:

    【解决方案2】:
    _createNew: function(Filecontent, config) {
        if(config.position) {
            this._insertAfter(Filecontent, config)
        }
        else {
            this._addAsLast(Filecontent, config);
        }
    
        return Filecontent;
    },
    

    【讨论】: