el && fn.call(el, e, el)这段代码这么写,我感觉有点懵逼。如果是想调用fn的话为什么不直接写fn.call(el, e, el)。可是前面还加&符号,他这是想求布尔值的话又不return。这样求出true or false又有什么意义?
认证0级讲师
利用了 && 的短路性质。
&&
在 A && B 中
A && B
意思是 如果 A 为假,那么整个表达式就是假,不用给 B 求值。 如果 A 为真,才再对 B 求值来判断
A
B
所以上面的代码的意思是
如果 el 为真,那么执行 fn.call(el, e, el);
el
fn.call(el, e, el);
|| 也有类似的性质:
||
如果左值为真,后面的就不必求值了。
比如 用来指定默认值
function test(a){ a = a || '默认值'; return a; } test(); // => '默认值' test('wow'); // => 'wow'
如果el存在的话 就调用后面的函数 否则不调用
雷雷
a && b 相当于 if (a){
b
}
利用了
&&
的短路性质。在
A && B
中意思是 如果
A
为假,那么整个表达式就是假,不用给B
求值。如果
A
为真,才再对B
求值来判断所以上面的代码的意思是
如果
el
为真,那么执行fn.call(el, e, el);
||
也有类似的性质:如果左值为真,后面的就不必求值了。
比如 用来指定默认值
如果el存在的话 就调用后面的函数 否则不调用
雷雷
a && b 相当于
if (a){
}