Coffeelint говорит, что у меня есть скрытые парни?

Coffeelint говорит мне, что у меня есть скрытые паренсы. Я пытаюсь найти причину этой ошибки.

#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 ответ

Решение

Я думаю, что есть проблема с вашим кодом. Посмотрите на сгенерированный 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(->
  ...
))

Эти скобки вокруг функции обратного вызова делают свое дело. Но, как я уже сказал, я уверен, что есть проблема с вашим кодом, и исправление на самом деле не имеет особого смысла для меня:)

Другие вопросы по тегам