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,您将如何解决此问题?我认为这是最好的做法,因为此限制仅控制可读性。:)