javascript - 請(qǐng)問這段 el && fn.call(el, e, el)代碼這么寫什么意思?
問題描述
el && fn.call(el, e, el)這段代碼這么寫,我感覺有點(diǎn)懵逼。如果是想調(diào)用fn的話為什么不直接寫fn.call(el, e, el)。可是前面還加&符號(hào),他這是想求布爾值的話又不return。這樣求出true or false又有什么意義?
問題解答
回答1:利用了 && 的短路性質(zhì)。
在 A && B 中
意思是 如果 A 為假,那么整個(gè)表達(dá)式就是假,不用給 B 求值。 如果 A 為真,才再對(duì) B 求值來判斷
所以上面的代碼的意思是
如果 el 為真,那么執(zhí)行 fn.call(el, e, el);
|| 也有類似的性質(zhì):
如果左值為真,后面的就不必求值了。
比如 用來指定默認(rèn)值
function test(a){ a = a || ’默認(rèn)值’; return a; }test(); // => ’默認(rèn)值’test(’wow’); // => ’wow’ 回答2:
如果el存在的話 就調(diào)用后面的函數(shù) 否則不調(diào)用
回答3:// 如果el為空會(huì)報(bào)錯(cuò),所以加個(gè)判斷if(el){ fn.call(el, e, el)}回答4:
a && b 相當(dāng)于 if (a){
b
}
相關(guān)文章:
1. javascript - ES6 中能否把 class 屬性 方法 分文件?2. javascript - es6擴(kuò)展運(yùn)算符...的問題3. angular.js - angular 配置代理proxy.conf.json后報(bào)錯(cuò),頁面返回500internal server error?4. 如何在windows機(jī)器上使用Java exec執(zhí)行有重定向的命令。5. javascript - 對(duì)不同類別的id的物品中的某個(gè)字段做權(quán)重覆蓋,除了直接使用if else語句還能有更優(yōu)雅便于維護(hù)的方式嗎?6. java - ehcache緩存用的是虛擬機(jī)內(nèi)存么?7. Java EE 6:JSF與Servlet + JSP我應(yīng)該學(xué)習(xí)JSF嗎?8. html5 - express4 + socket.io 如何在connection的回調(diào)外邊使用socket.emit方法9. python - for else10. javascript - es6將類數(shù)組轉(zhuǎn)化成數(shù)組的問題
