淺談js中調用函數時加不加括號的問題
其實總結起來如下:
函數只要是要調用它進行執(zhí)行的,都必須加括號。此時,函數()實際上等于函數的返回值。當然,有些沒有返回值,但已經執(zhí)行了函數體內的行為,這個是根本,就是說,只要加括號的,就代表將會執(zhí)行函數體代碼。
不加括號的,都是把函數名稱作為函數的指針,用于傳參,此時不是得到函數的結果,因為不會運行函數體代碼。它只是傳遞了函數體所在的地址位置,在需要的時候好找到函數體去執(zhí)行。
所以一般時候我們都是采用的是無括號的原因。這也是由于括號的二義性,因為括號是“函數調用運算符”,相當于在執(zhí)行這樣一個函數,所以產生的問題在理解了之后也就理解了。
另外:除了兩邊不加括號,也可以兩邊都加括號來實現函數的拷貝,而不是執(zhí)行函數,如果左邊無圓括號右邊有圓括號,實際就是相當于產生的是一個屬性而不是一個方法了,在調用的時候只用屬性名或者函數名,而不需要再用函數調用運算符圓括號了,因為它就相當于一個屬性,當然也可以用函數調用的方式來調用,加上括號,拿上例子來說就是如果寫成person.sayHello =sayHi(),在調用sayHello的時候就可以直接用person.sayHello或者person.sayHello()了,二者都實現相同的效果。
百度知道的回答:
函數只要是要調用它進行執(zhí)行的,都必須加括號。此時,函數()實際上等于函數的返回值。當然,有些沒有返回值,但已經執(zhí)行了函數體內的行為,這個是根本,就是說,只要加括號的,就代表將會執(zhí)行函數體代碼。
不加括號的,都是把函數名稱作為函數的指針,用于傳參,此時不是得到函數的結果,因為不會運行函數體代碼。它只是傳遞了函數體所在的地址位置,在需要的時候好找到函數體去執(zhí)行。
以上這篇淺談js中調用函數時加不加括號的問題 就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
js中onclick和addEventListener的區(qū)別詳解
這篇文章深入探討了JavaScript中處理事件的兩種不同方法,即熟悉的onclick和多功能的addEventListener方法,感興趣的小伙伴可以跟隨小編一起學習一下2023-08-08ZeroClipboard.js使用一個flash復制多個文本框
這篇文章主要為大家詳細介紹了ZeroClipboard.js使用一個flash復制多個文本框,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06