【问题标题】:javascript 'or' statementjavascript 'or' 语句
【发布时间】:2012-04-18 04:43:33
【问题描述】:
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 是那些声明的 NavAxis 更改为 'xy'

【问题讨论】:

    标签: javascript variables if-statement


    【解决方案1】:

    你真正想要的是:

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

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

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

    【讨论】:

      【解决方案2】:

      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 个网址怎么办?

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

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

      【讨论】:

      • 要回答这个问题,原代码不起作用的原因是(url1 || url2) 将评估为true,而location.href 也将评估为true,给你@987654331 @.
      • @djlumley 不正确,url1 || url2 将评估为 url1location.href 将评估为另一个字符串,然后比较这两个字符串是否相等,得到if( "some_url" == url1)。跨度>
      • 请注意,Array.indexOf() 在旧版本的(愚蠢的)IE 中不可用。
      • @tobyodavis 你说得对,需要喝杯咖啡,打字前三思~
      • @Salman 旧版浏览器的解决方案就是there
      【解决方案3】:

      url1 || url2 将评估为file:///...#/page4(即url1)。所以本质上,你一直在比较location.hrefurl1。要与其中任何一个进行比较,请尝试:

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

      【讨论】:

        猜你喜欢
        • 2011-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-26
        • 2021-05-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多