是否可以使用 && 运算符连接 3 个查询?

Is it possible to concatenate 3 queries with the && operator?

我的页面上有一些 JavaScript 检查 indexOf 以在我的 URL 中找到众多字符串之一,然后它执行滚动到页面上设定位置的功能.

我目前正在使用以下代码连接两个条件,但我需要合并第三个条件。当我添加额外的行和额外的 && 时,我的 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 
};

我不会称之为串联。双符号表示逻辑 AND 运算符。一般来说,您可以拥有尽可能多的操作数:

operand1 && operand2 && operand3 ...

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

逻辑与(&&

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

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

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

逻辑或(||

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 语句的主体不会被执行。