我的页面上有一些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
};
答案 0 :(得分:1)
我不会称这种连接。双符号表示逻辑AND运算符。通常,您可以拥有尽可能多的操作数:
operand1 && operand2 && operand3 ...
每个operand
应该或者至少应该被评估为布尔值 - true
或false
。逻辑结果应用于评估的布尔值,如下所示:
&&
)true && true = true
true && false = false
false && true = false
false && false = false
这意味着如果任何操作数被评估为false
,则整个评估结果为false
(true && true && false
最终成为false
。
如果您想允许任何条件(操作数)导致结果为true,则必须使用
||
)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
语句的主体不会被执行。