代码:
a = '' || 'abc';
alert (a); //输出abc||不是逻辑或,应该返回true或false吗?就算按照运算符优先级,也不应该是这结果?||到底有哪几种用法,有谁能详细解释下吗?手册里也翻不到这个用法。

解决方案 »

  1.   

    这里的 || 表示取式子两边不为空的那一个
    当然,如果第一个不为空,则不会取第二个一般用于解决浏览器兼容、或标准兼容问题
    比如:
    处理事件
    function(e){
        e = window.event || e;
    }处理标准:
    document.body || document.documentElement
      

  2.   

    ||就一种用法,只是你理解上的问题var ret = val_1 || val_2 || val3;
    解释为
    当val_1为“真”返回val_1
    否则当val_2为“真”返回val_2
    否则返回val_3“真”值并不一定是boolean型的true
      

  3.   

    逻辑“或”运算符 (||)
    对两个表达式执行逻辑“或”。result = expression1 || expression2result
    任何变量。
    expression1
    任何表达式。
    expression2
    任何表达式。
    JScript 使用下面的规则来把非 Boolean 值转换为 Boolean 值: 1.所有对象都被认为是 true。 
    2.字符串当且仅当为空时才被认为是 false。 
    3.null 和 undefined 被认为是 false。 
        alert(null||3);//3
        alert((1/'a')||3);//3
    4.数字当且仅当为 0 时才是 false。