JavaScript中的if-else语句工作不正常

if else statement in JavaScript not working properly

本文关键字:工作 不正常 语句 if-else 中的 JavaScript      更新时间:2023-09-26

您可以从以下代码中看到:

function setBodyClasses() {
    var answer = $surveyAns.getAnswer('QUEST223');
    answer = 'oro';
    if(!surveyUtils.isNullOrWhiteSpace(answer)) {
        if (answer.toLowerCase().indexOf('oro')) {
            $scope.bodyClasses = 'vip_gold';
        }
        else if (answer.toLowerCase().indexOf('platino')) {
            $scope.bodyClasses = 'vip_platinum';
        }
        else {
            $scope.bodyClasses = '';
        }
    }
}

由于某些原因,if-else语句无法正常工作,正如您所看到的,答案的值是oro,它应该在第一个if条件下停止,但当它在第一个if条件下时,它会比较该值,并在假设该值不相同的情况下向前移动,并且由于其他原因,即使该值不同,它也会进入第二个if条件。知道为什么会发生这种事吗?

您错误地检查answer是否包含字符串。.indexOf()会返回它在字符串中的位置。它可能是0,也就是字符串的开头(它就像一个数组,在那里它是零索引的)。如果未找到,则返回-1

如果你只做if(answer.toLowerCase().indexOf('oro')),它将是false,因为0是"虚假的"。

您要执行的操作:if(answer.toLowerCase().indexOf('oro') >= 0)

您确定首先要使用indexOf()吗?这是在检查字符串是否"包含"oro。你确定你不只是需要:if(answer.toLowerCase() === 'oro')吗?

indexOf返回0,而0是一个错误值,因此它没有进入条件。应为:

.indexOf('oro') > -1

与其他条件相同

您正在使用indexOf来查找字符串中是否存在"oro"。然而,IndexOf正确地返回值0,这在JavaScript中相当于false。我个人会使用answer.indexOf('oro') !== -1