使用||有多正确在JavaScript中作为“ifnull”?

时间:2010-12-03 10:57:12

标签: javascript

我在网上看过这样的代码:

function MyEventHandler(e)
{
    var ev = e || event;
    var target = ev.srcElement || ev.target
}

本质上,||运算符用作a?a:b的简写。据我所知 - 它适用于所有浏览器。但是,为JScript提出规范,I see

  

对两个表达式执行逻辑析取。

  

JScript使用以下规则将非布尔值转换为布尔值:

     
      
  • 所有对象都被视为真实。
  •   

所以......根据这个结果,结果应该是布尔值true / false。我只是想知道 - 我是走在无证行为的刀刃上,还是在这里有一些我没有接受的好的暗示?

3 个答案:

答案 0 :(得分:4)

不,我认为您理解||的合并行为就好了。

修改

&&也是合并的。 a && b的行为与a ? b : a相似。

答案 1 :(得分:4)

这种行为非常好。请参阅ECMAScript规范的第11.11章:http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf

不幸的是,这并不容易理解,但最后一段说明:

  

和&&amp ;;或||   运算符不一定是类型   布尔。产生的价值将   永远是两个中的一个的价值   操作数表达式。

答案 2 :(得分:1)

这只是JScript规范中的一个不准确之处。 JScript是ECMAScript标准的实现,因此对于真实的事态,您应该查看ECMAScript规范。