Javascript 函数参数中的运算符?

Javascript 函数参数中的运算符?,javascript,Javascript,我有以下代码 var func = function(a, b, c) { //Some Code }; $('whatever').on( function(e){ func( e.originalEvent && e.originalEvent.target); //<- WTF? }); 函数参数中的运算符是什么意思?那么e.originalEvent&&e.originalEvent.target是第一个参数,因为a、b和c将未定义 如果a为假

我有以下代码

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

$('whatever').on( function(e){
    func( e.originalEvent && e.originalEvent.target);  //<- WTF?
});
函数参数中的运算符是什么意思?

那么e.originalEvent&&e.originalEvent.target是第一个参数,因为a、b和c将未定义

如果a为假值,a&&b返回a,否则返回b。

则e.originalEvent&&e.originalEvent.target是第一个参数,因为a、b和c将未定义


如果a是falsy值,则a&&b返回a,否则返回b。

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


在这种情况下,如果e.originalEvent为truthy not null、false或未定义,它将计算为e.originalEvent.target。

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

在这种情况下,如果e.originalEvent为truthy not null、false或undefined,则它将计算为e.originalEvent.target。

如果两个表达式都为truthy,则&&返回第一个非truthy表达式或最后一个计算表达式

因此,基本上,您要确保e.originalEvent存在,如果存在,则将e.originalEvent.target的值作为第一个参数传递给func。如果e.originalEvent不存在,它将是未定义的。在这种情况下,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将是未定义的。

如果两个表达式都是真的,则&&将返回第一个非真表达式或最后一个计算表达式

因此,基本上,您要确保e.originalEvent存在,如果存在,则将e.originalEvent.target的值作为第一个参数传递给func。如果e.originalEvent不存在,它将是未定义的。在这种情况下,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是未定义的。

运算符是什么意思?这里有一个很好的解释。你可以使用任何表达式作为函数调用的参数。然后,表达式的结果将传递给函数。运算符是什么意思?这里有一个很好的解释。你可以使用任何表达式作为函数调用的参数。表达式的结果将传递给函数。啊,因此它只是一个布尔表达式,func的a参数是&&表达式的最后一个值。明白了,谢谢!啊,所以它只是一个布尔表达式,func的a参数是&&表达式的最后一个值。明白了,谢谢!感谢您的示例和对&&如何工作的解释-我认为它只返回true/false,这取决于参数是否传递了表达式。我不知道它可以返回最后一个值。谢谢感谢您的示例和对&&如何工作的解释-我认为它只返回true/false,这取决于参数是否传递了表达式。我不知道它可以返回最后一个值。谢谢