我从未见过OR参数||在if语句之外使用。
这行代码有什么作用?
var doc = ($iframe[0].contentWindow || $iframe[0].contentDocument).document
是否说它等于其中任何一个???
答案 0 :(得分:4)
A || B
首先评估A.如果是,则返回A,并且永远不需要查看B. 如果A为假,则评估并返回B.
例如,如果你写
function (x)
{ x = x || 50
...
如果x为nil(或某种假值),这将使x = 50。 否则,x将不会被更改。
就像拥有默认值或故障安全保护一样。如果您知道答案永远不应该是假的,那么如果A为假,则提供B的备份值。
答案 1 :(得分:4)
获取iframe
window
对象的DOM引用的方法是使用:
contentWindow.document
现在,原因IE<8
有问题,使用
var doc = ($iframe[0].contentWindow || $iframe[0].contentDocument).document;
// Browser you get this one ^^^ ? NO? Sh** you're IE7, go with^^
因此早期版本的IE会跳过contentWindow
因无法识别的原因,并且由于||
(或)运算符会跟进下一个contentDocument
。
我不必重复OR
运算符的原因,因为其他聪明人已经解释过它:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators
答案 2 :(得分:-2)
这只是三元运算符的一种简短形式,它总是根据语句返回一个值。所以,e。 G:
var fruit = "apple";
var test = fruit === "apple" ? fruit : "banana";
当水果设置为&#34; apple&#34;时,将变量test设置为fruit的值。否则,测试将使用&#34; banana&#34;初始化。