【问题标题】:JavaScript OR Operator correct, but if statement not behaving as expectedJavaScript OR 运算符正确,但 if 语句未按预期运行
【发布时间】:2014-06-17 07:52:26
【问题描述】:

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

【问题讨论】:

    标签: javascript or-operator


    【解决方案1】:

    || 的第二个操作数是:

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

    ...这将产生一个数字:子字符串的索引,如果没有找到,则为-1。因此,当强制为布尔值时,对于所有情况(-1、23、42 等),它将为 true,除非子字符串恰好在索引 0 中找到,在这种情况下,它将是 @987654326 @。

    你可能想要一个!== -1

    【讨论】:

    • 谢谢@TJCrowder。我以为我最后确实有> -1。请注意,当我进行检查时,我在截屏视频中输入了它,但没有仔细查看我的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    相关资源
    最近更新 更多