-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

あなたの2番目のオペランド||は次のとおりです。

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

...結果は数値になります。部分文字列のインデックス、または-1見つからない場合。したがって、ブール値に強制されるとtrue、部分文字列がインデックスで見つかった場合を除いて、すべての場合 (-1、23、42 など)0になりますfalse

あなたはおそらく!== -1そこにいたかったでしょう。

于 2014-06-17T07:55:22.047 に答える