JavaScript OR运算符更正,但if语句的行为不符合预期

时间:2014-06-17 07:52:27

标签: javascript or-operator

我正在使用JavaScript繁重的应用程序,我有以下代码:

function displayingNotes() {
    if (!($scope.overseasTravelTask.RegisteredKeeperName.toLowerCase()
           .indexOf("zenith") > -1 || 
         $scope.overseasTravelTask.RegisteredKeeperAddressLine1.toLowerCase()
           .indexOf("zenith")
       )
    ) 
    {
       $scope.calloutClass = 'callout-danger';
       $scope.calloutMessage = 'We (Zenith) cannot provide this vehicle with the necessary documents.';
       $scope.disableNextBtn = true;
    } 
    else 
    {
       $scope.calloutMessage = 'Please ask driver about this.';
    }
}

对于 if语句,我在Chrome控制台中放置一个断点并检查我的逻辑,逻辑看起来是正确的,但当我点击F10按钮时,我希望进入如果声明,我跳过它!

1 个答案:

答案 0 :(得分:4)

||的第二个操作数是:

$scope.overseasTravelTask.RegisteredKeeperAddressLine1.toLowerCase().indexOf("zenith")

...这将产生一个数字:子字符串的索引,如果找不到则为-1。因此,当强制转换为布尔值时,对于所有情况(-1,23,42等),它将是true,而不是在索引0处找到子字符串时,在这种情况下它将是false

你可能想要!== -1