这个函数有太多的陈述。 (41)

时间:2015-06-24 22:15:24

标签: javascript angularjs jshint

我有这个控制器

  .controller('ctrl', function($scope, $rootScope, $timeout, $alert, 
                               $location, $tooltip, $popover, BetSlipFactory, 
                               AccordionsFactory, AuthFactory, 
                               RiskWinCalculations) {...});

并且,由于jshint

,我收到此错误
  

第10行col 44此函数有太多语句。 (41)

那么,我应该怎么做才能避免呢?

3 个答案:

答案 0 :(得分:12)

它并不代表管理不善的代码,因为@pankajparkar之前说过,可能是因为你有这样的东西,让我们从我的一个项目中说出来:

  $scope.betLoader = false;
  $scope.showIfbetAlerts = true;
  $scope.displayStraight = true;
  $scope.displayParlay = true;
  $scope.displayIfBet = true;
  $scope.displayTeaser = true;
  $scope.displayPleaser = true;
  $scope.displayReverse = true;
  $scope.unavailableBet = false;
  $scope.subAccordion = false;
  $scope.betTypeShow = false;
  $scope.showStraight = true;

你可以这样做:

$scope.setInitialState = function() {
  $scope.betLoader = false;
  $scope.showIfbetAlerts = true;
  $scope.displayStraight = true;
  $scope.displayParlay = true;
  $scope.displayIfBet = true;
  $scope.displayTeaser = true;
  $scope.displayPleaser = true;
  $scope.displayReverse = true;
  $scope.unavailableBet = false;
  $scope.subAccordion = false;
  $scope.betTypeShow = false;
};
$scope.setInitialState();

将解决它。

<强>更新

让我解释一下:

它不仅与依赖关系有关,当有太多语句时,jslint会抛出此错误,他在第十行之前说这是控制器开始的地方,所以离开那里,他应该有太多的陈述,如果你将所有这些语句放在1个函数中,那些语句将减少为1 :)

答案 1 :(得分:12)

摆脱错误的最佳方法是编辑jshint设置以不显示错误。

http://jshint.com/docs/options/#maxstatements

这是一个非常多愁善感的jshint警告,并没有任何意义。

通常情况下,由于很多原因,需要4个或5个以上参数的函数是个坏主意,但技术上并不错。在这种情况下,这些参数是Angular定义依赖关系的方式,所以不应该是一个问题。如果代码有效,我不担心。

答案 2 :(得分:2)

如果控制器需要更多语句而您没有任何其他方法可以删除它,那么请转到.jshintrc文件并编辑它

"maxstatements": 80, // or whatever number you want'

感谢