-1

我在一个 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 按钮时,我希望进入 if 语句,而不是跳过它!

4

1 回答 1

4

你的第二个操作数||是:

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

...这将产生一个数字:子字符串的索引,或者-1如果没有找到。因此,当强制为布尔值时,它将true适用于所有情况(-1、23、42 等),而不是碰巧在 index 找到子字符串时0,在这种情况下它将是false.

你可能想要一个!== -1在那里。

于 2014-06-17T07:55:22.047 回答