#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){
}