鍍金池/ 問答/HTML/ callback&&callback.call() 什么意思

callback&&callback.call() 什么意思?

之前這個問題沒有描述清楚,抱歉!我的疑問點并不是我不知道這個 && 符號的意思。而是讓callback執(zhí)行,為什么又調(diào)用一個什么都不傳的callback.call()。我不清楚后者有什么用~~

clipboard.png

回答
編輯回答
薔薇花

&& 這個符號,前面語句為 false 時候 后面的就不會執(zhí)行。
當(dāng) callback 為 null undefined 之類的時候,callback.call()就不會執(zhí)行了,當(dāng) callback 有值的時候才執(zhí)行后面的語句。

2017年6月24日 01:59
編輯回答
安于心

因為邏輯運算符&& ||通常具有短路求值的特性
即,如果只求部分值就可以得到整個表達(dá)式的值,那么剩下的部分就不會再被求值。
例如:
f()&&g(),如果f()為false,那么g()無論為何,整個表達(dá)式都會是false,因此g()不會被求值(不會被執(zhí)行)
f()||g(),如果f()為true,那么g()無論為何,整個表達(dá)式都會是true,因此g()不會被求值(不會被執(zhí)行)


根據(jù)這個特性,可以做一些邏輯的簡寫
比如if(xxx) {yyy} 就可以寫成 xxx && yyy
if(!xxx) {yyy} 就可以寫成 xxx || yyy

因此callback&&callback.call() 就是 if(callback) callback.call()


這個寫法不是很推薦使用在業(yè)務(wù)代碼里。

2018年1月26日 14:24
編輯回答
巴扎嘿

執(zhí)行callback的意思,只是call沒有傳入?yún)?shù),如果傳入了參數(shù),第一個參數(shù)就是函數(shù)執(zhí)行的時候this指向的值

2018年2月25日 02:06
編輯回答
淺淺
  • 翻譯:相當(dāng)于
if(callback){
    callback.call(undefined);
}
  • 原來的寫法中的&&是短路操作,下圖是我個人的總結(jié):

圖片描述

  • call的第一個參數(shù)綁定函數(shù)調(diào)用的this,參數(shù)為空,實際就是undefined。
  • 這樣寫的原因是callback參數(shù)是可以缺省的,在不傳入callback參數(shù)的情況下,由于&&短路操作也不會報錯
2017年5月29日 10:38