javascript 'or' statement

javascript 'or' statement

本文关键字:statement or javascript      更新时间:2023-09-26
var NavAxis='yx';
var url1 = 'file:///C:/Users/Luke/Desktop/Senior%20Project/index.html#/page4'
var url2 = 'file:///C:/Users/Luke/Desktop/Senior%20Project/index.html#/page5'   
if(location.href == (url1 || url2)){
      NavAxis='xy';
}else{
       NavAxis='yx';
} 

为什么这不起作用?我希望它是这样,如果 URL 是所述导航轴中的任何一个,则更改为"xy"

你真正想要的是:

if ( location.href === url1 || location.href === url2 )

您写的内容将首先评估内括号:(url1 || url2) .只要url1是真实的(它在你的代码中),这将评估为url1

因此,只有当location.href等于url1而不是url2时,您的条件才会为真。

JavaScript OR的工作原理:

true || true   // true;
true || false  // true;
false || false // false;
0 || true      // 0 will translate to boolean because other side is boolean and it returns true
1 || 3         // no translation, returns 1
undefined || 2 // undefined will translated to boolean false. returns 2
null || "wow"  // "wow"

这是你应该这样做的方式:

if(location.href == url1 || location.href == url2){
    NavAxis='xy';
}else{
   NavAxis='yx';
}

这适用于两到三次检查,但是如果您有 10 个 url 怎么办?

使用适用于多个项目检查Array.indexOf()方法是更好的方法:

if([url1, url2, url3].indexOf(location.href) != -1 ){
        NavAxis='xy';
    }else{
       NavAxis='yx';
    }

url1 || url2的计算结果将file:///...#/page4(即 url1 )。所以从本质上讲,你一直在location.hrefurl1进行比较。要与其中之一进行比较,请尝试:

if (location.href == url1 || location.href == url2)