#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'