解决pmd错误“避免在操作数中分配...”

时间:2016-09-28 09:47:50

标签: pmd ternary

$scope.nodataCheck("W",$scope.groups) && $scope.nodataCheck("b",$scope.groups) ?$scope.noWatsonData=true:$scope.noWatsonData=false;

我收到一个pmd错误,说“避免在操作数中分配;这会使代码更复杂,更难阅读。这有时候 表示使用赋值运算符'='而不是等于运算符'=='的错误。“

我怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

您要将truefalse分配给$scope.noWatsonData。这是埋在行尾,所以很难看到,很容易被忽视。您可以将作业移到开头 - 这样很明显,此行确定了$scope.noWatsonData的新值:

$scope.noWatsonData = $scope.nodataCheck("W",$scope.groups)
    && $scope.nodataCheck("b",$scope.groups) 
    ? true
    : false;

由于我们现在只是根据条件分配真/假,我们可以在没有三元运算符的情况下分配它,并使其更短:

$scope.noWatsonData = $scope.nodataCheck("W",$scope.groups)
    && $scope.nodataCheck("b",$scope.groups);

供参考,这是关于PMD JavaScript规则AssignmentInOperand