JavaScript OR操作符正确,但if语句的行为不符合预期



我在一个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语句,而不是跳过它!

||的第二个操作数是:

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

…子字符串的索引,如果没有找到,则为-1。因此,当强制转换为布尔值时,除了子字符串恰好在索引0处找到时,它将在所有情况下(- 1,23,42等)都是true,在这种情况下,它将是false

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

相关内容

  • 没有找到相关文章

最新更新