我在网上看过这样的代码:
function MyEventHandler(e)
{
var ev = e || event;
var target = ev.srcElement || ev.target
}
本质上,||
运算符用作a?a:b
的简写。据我所知 - 它适用于所有浏览器。但是,为JScript提出规范,I see:
对两个表达式执行逻辑析取。
和
JScript使用以下规则将非布尔值转换为布尔值:
- 所有对象都被视为真实。
所以......根据这个结果,结果应该是布尔值true / false。我只是想知道 - 我是走在无证行为的刀刃上,还是在这里有一些我没有接受的好的暗示?
答案 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规范。