我对几行代码AngularJS有些怀疑

时间:2016-09-09 02:05:27

标签: javascript angularjs

我工作的地方有一个我需要修改的angularjs项目,但我完全不能理解这段代码:

app.controller("complementsController", function($scope, $rootScope, $mdSidenav, $timeout, $localStorage, $window) {
    $scope.storage = $localStorage;
    $scope.arrayCubiert = $scope.storage.cocinaCubiert.split("-");
    $scope.tipoCubiert = $scope.arrayCubiert[1];
    $scope.return = function() {
        $window.history.back()
    };
    $scope.configurations = [{
        logo: "some-logo",
        val: 1
    }];
    "CUE" != $scope.tipoCubiera && "CUF" != $scope.tipoCubiert && "CUS" != $scope.tipoCubiert || $scope.configurations.push({
        logo: "fiss-logo",
        val: 2
    });
    "CUE" == $scope.tipoCubiert && $scope.configurations.push({
        logo: "grafett-essence",
        val: 3
    });
    $scope.opcionTitle = "EhapeAL", $scope.opcionImg = [ ["EAL.png", "EhapeAL AL"] ];
    $scope.opcionBtn = 1, $timeout(function() {
        $mdSidenav("sidebar").toggle().then(function() {})
    }, 500);

特别是我不明白的是:

" CUE" != $ scope.tipoCubierta&& " CUF" != $ scope.tipoCubierta&& " CUS" != $ scope.tipoCubierta || $ scope.configuraciones.push({         logo:" fisso-logo",         val:2     }),

这是一种速记条件???如果是这样的话,就像传统的"方式。

2 个答案:

答案 0 :(得分:1)

与AngularJS无关的东西只是javascript 如果你提出类似的东西:



4 != 1 && 4 != 2 && 4 != 3 || console.log("hello world")




它与

相同



if(4 != 1 && 4 != 2) {
 if( !(4 != 3){ //console is only executed when the 3rd condition is FALSE because is an OR
  console.log("hello world");
  }
}

//remember that saying foo == 1 && foo == 2 || foo == 3 it's the same as   foo == 1 && (foo == 2 || foo =3)




希望有所帮助

答案 1 :(得分:1)

来自MDN关于logical opereator

  

短路评估

     

当逻辑表达式从左到右进行评估时,它们会被测试   可能的"短路"评估使用以下规则:

     

false&&任何短路都被评估为假。

     

true ||任何短路评估都是真的。

     

逻辑规则保证这些评估始终是正确的。请注意   以上表达式的任何部分都不会被评估,所以任何一方   这样做的效果不会生效。

所以"传统"以上代码的方式是:

if(!("CUE" != $scope.tipoCubierta && "CUF" != $scope.tipoCubierta && "CUS" != $scope.tipoCubierta)){
     $scope.configuraciones.push({ logo: "fisso-logo", val: 2 })
}