我有以下代码
var func = function(a, b, c) {
//Some Code
};
$('whatever').on( function(e){
func( e.originalEvent && e.originalEvent.target); //<- WTF?
});
函数参数中的运算符是什么意思?
答案 0 :(得分:4)
&&
返回第一个非真实表达式或最后一个计算表达式,如果它们都是真实的。
基本上,您确保e.originalEvent
存在,如果存在,e.originalEvent.target
的值将作为第一个参数传递给func
。如果e.originalEvent
不存在,则为undefined
。在这种情况下,undefined
将传递给a
,e.originalEvent.target
根本不会被评估。
考虑以下表达式
console.log(1 && 2);
# 2
console.log(null && 2);
# null
console.log(undefined && 2);
# undefined
console.log(0 && 2);
# 0
注意:由于您只传递了一个参数,因此b
和c
默认为undefined
。
答案 1 :(得分:2)
这是一个简单的表达方式。传递给函数的参数将是AND
- 两个值的结果。
在这种情况下,如果e.originalEvent
是真实的(不是null
,false
或undefined
),则评估为e.originalEvent.target
。
答案 2 :(得分:0)
然后e.originalEvent && e.originalEvent.target
是a
的第一个参数,b
和c
将是undefined
。
a && b
为假值,则 a
会返回a
,否则会返回b
。