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