我在网上见过这样的代码:
function MyEventHandler(e)
{
var ev = e || event;
var target = ev.srcElement || ev.target
}本质上,||运算符被用作a?a:b的缩写。据我所知,它适用于所有浏览器。但提出了一些规范,比如JScript,我明白了
对两个表达式执行逻辑分离。
和
JScript使用以下规则将非布尔值转换为布尔值:
所以..。根据这一点,结果应该是布尔值true/false。我只是想知道--我是在无证行为的刀刃上行走,还是这里有一些我还没有发现的细微的暗示?
发布于 2010-12-03 11:32:44
这种行为很好地记录下来了。参见ECMAScript规范的第11.11章:http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf
不幸的是,它不是很容易理解,但最后一段指出:
由&&或维特运算符产生的值不一定是布尔型的。产生的值将始终是两个操作数表达式之一的值。
发布于 2010-12-03 11:01:29
不,我认为你很清楚||的合并行为。
编辑:
&&也在合并。a && b的行为类似于a ? b : a。
发布于 2010-12-03 11:20:30
这只是JScript规范中的一个错误。JScript是ECMAScript标准的实现,因此对于实际情况,您应该查看ECMAScript规范。
https://stackoverflow.com/questions/4344844
复制相似问题