是否可以将3个查询与&&和运营商?

时间:2015-06-12 11:31:59

标签: javascript logical-operators

我的页面上有一些JavaScript,它检查indexOf以查找我的URL中的众多字符串之一,然后执行一个滚动到页面上设置位置的函数。

我目前正在使用以下代码来连接2个条件,但我需要合并第3个条件。当我添加额外的行和额外的&&时,我的JavaScript失败了。任何人都可以推荐更好的解决方案吗?

我目前的工作代码:

    if (window.location.href.indexOf("search_categories") > -1 && 
        window.location.href.indexOf("search_region") > -1) {
        // do some stuff 
    };

失败的代码:

if (window.location.href.indexOf("search_categories") > -1 && 
    window.location.href.indexOf("search_region") > -1 && 
    window.location.href.indexOf("upload-a-cv") > -1) {
    // do some stuff 
};

1 个答案:

答案 0 :(得分:1)

我不会称这种连接。双符号表示逻辑AND运算符。通常,您可以拥有尽可能多的操作数:

operand1 && operand2 && operand3 ...

每个operand应该或者至少应该被评估为布尔值 - truefalse。逻辑结果应用于评估的布尔值,如下所示:

逻辑AND(&&

true && true = true
true && false = false
false && true = false
false && false = false

这意味着如果任何操作数被评估为false,则整个评估结果为falsetrue && true && false最终成为false

如果您想允许任何条件(操作数)导致结果为true,则必须使用

逻辑OR(||

true || true = true
true || false = true
false || true = true
false || false = false

有效false || false || false || true评估为true

如果您希望某些条件组都是真的,并且另一组至少有一组是真的,则必须使用大括号对它们进行分组,如下所示:

- (true && false) || (false || true)评估为true
- (true && false) && (false || true)评估为false

在您的特定代码段中:

if (window.location.href.indexOf("search_categories") > -1 && 
window.location.href.indexOf("search_region") > -1 && 
window.location.href.indexOf("upload-a-cv") > -1 ) ...

只要缺少请求中的一个参数就足以让if表达式求值为false,因此if语句的主体不会被执行。