Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 此函数的语句太多。(41)_Javascript_Angularjs_Jshint - Fatal编程技术网

Javascript 此函数的语句太多。(41)

Javascript 此函数的语句太多。(41),javascript,angularjs,jshint,Javascript,Angularjs,Jshint,我有这个控制器 .controller('ctrl', function($scope, $rootScope, $timeout, $alert, $location, $tooltip, $popover, BetSlipFactory, AccordionsFactory, AuthFactory,

我有这个控制器

  .controller('ctrl', function($scope, $rootScope, $timeout, $alert, 
                               $location, $tooltip, $popover, BetSlipFactory, 
                               AccordionsFactory, AuthFactory, 
                               RiskWinCalculations) {...});
由于
jshint
,我得到了这个错误:

第10行第44列此函数的语句太多。(41)


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

这并不意味着像@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:)

消除错误的最佳方法是编辑
jshint
设置以不显示它

这是一个毫无意义的警告


通常,一个需要超过4或5个参数的函数是一个坏主意,原因很多,但从技术上讲并不是错误的。在本例中,这些参数是Angular定义依赖项的方法,因此不应该是问题。如果代码有效,我就不用担心了。

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

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

谢谢

这意味着你的代码管理不善..你应该将其模块化..然后你的代码也会有1000多行..对吗?用更少的语句将其拆分成有意义的部分?或者,如果代码是重复的,就减少重复。@Nietzsche程序员哦,那真的很酷。真不敢相信这种情况。你能先删除未使用的,然后检查数字是多少吗…这不仅仅是依赖项,当有太多语句时,jslint会抛出这个错误,他在控制器开始的第十行之前说,所以离开那里,他应该有太多的语句,如果你把所有这些语句放在一个函数中,这些语句将被简化为1:)Genius,我把所有这些语句放在一起,包装在一个函数中,boila:)这也解决了我的问题。我认为jshint担心大量的代码行。显然,它更担心大量的赋值语句。感谢您的回答:)如果您使用controllerAs语法而不是$scope,您将如何解决此问题?我认为这是最好的做法,因为此限制仅控制可读性。:)