函数参数中的运算符?

时间:2014-04-10 02:30:17

标签: javascript

我有以下代码

var func = function(a, b, c) {
    //Some Code
};

$('whatever').on( function(e){
    func( e.originalEvent && e.originalEvent.target);  //<- WTF?
});

函数参数中的运算符是什么意思?

3 个答案:

答案 0 :(得分:4)

&&返回第一个非真实表达式或最后一个计算表达式,如果它们都是真实的。

基本上,您确保e.originalEvent存在,如果存在,e.originalEvent.target的值将作为第一个参数传递给func。如果e.originalEvent不存在,则为undefined。在这种情况下,undefined将传递给ae.originalEvent.target根本不会被评估。

考虑以下表达式

console.log(1 && 2);
# 2
console.log(null && 2);
# null
console.log(undefined && 2);
# undefined
console.log(0 && 2);
# 0

注意:由于您只传递了一个参数,因此bc默认为undefined

答案 1 :(得分:2)

这是一个简单的表达方式。传递给函数的参数将是AND - 两个值的结果。

在这种情况下,如果e.originalEvent是真实的(不是nullfalseundefined),则评估为e.originalEvent.target

答案 2 :(得分:0)

然后e.originalEvent && e.originalEvent.targeta的第一个参数,bc将是undefined

如果a && b为假值,则

a会返回a,否则会返回b