Coffeelint说我有隐含的parens?

时间:2017-03-24 04:55:27

标签: javascript coffeescript coffeelint

Coffeelint告诉我,我有隐含的parens。我试图找到导致此错误的原因。

#309: Implicit parens are forbidden.

这是我的代码:

((factory) ->
  if typeof module == 'object' and module.exports
    module.exports = factory
  else
    factory(Highcharts)
  return
)(Highcharts) ->
...
  if seriesTypes.map
    seriesTypes.map::exportKey = 'name'
  if seriesTypes.mapbubble
    seriesTypes.mapbubble::exportKey = 'name'
  if seriesTypes.treemap
    seriesTypes.treemap::exportKey = 'name'
  return
###The entire block over code is one function.

有人试过这个吗?

1 个答案:

答案 0 :(得分:0)

我认为您的代码存在问题。看看JS生成的:

(function(factory) {
  if (typeof module === 'object' && module.exports) {
    module.exports = factory;
  } else {
    factory(Highcharts);
  }
})(Highcharts)(function() {
  ...
});

当第一个函数返回undefined时,尝试将undefined作为函数调用时出错。

实际上 no_implicit_parens 适用于:

# This rule prohibits implicit parens on function calls.

# Some folks don't like this style of coding.
myFunction a, b, c

# And would rather it always be written like this:
myFunction(a, b, c)

启用此选项后,必须在任何函数调用的任何参数列表周围放置括号 要使代码正常工作,您可以执行以下操作:

((factory) ->
  ...
)(Highcharts(->
  ...
))

回调函数周围的这些括号可以解决问题。但正如我所说,我确定您的代码存在问题,而且修复实际上对我没有多大意义:))