其實總結起來如下:
函數只要是要調用它進行執行的,都必須加括號。此時,函數()實際上等於函數的返回值。當然,有些沒有返回值,但已經執行了函數體內的行為,這個是根本,就是說,只要加括號的,就代表將會執行函數體代碼。
不加括號的,都是把函數名稱作為函數的指針,用於傳參,此時不是得到函數的結果,因為不會運行函數體代碼。它只是傳遞了函數體所在的地址位置,在需要的時候好找到函數體去執行。
所以一般時候我們都是采用的是無括號的原因。這也是由於括號的二義性,因為括號是“函數調用運算符”,相當於在執行這樣一個函數,所以產生的問題在理解了之後也就理解了。
另外:除了兩邊不加括號,也可以兩邊都加括號來實現函數的拷貝,而不是執行函數,如果左邊無圓括號右邊有圓括號,實際就是相當於產生的是一個屬性而不是一個方法了,在調用的時候只用屬性名或者函數名,而不需要再用函數調用運算符圓括號了,因為它就相當於一個屬性,當然也可以用函數調用的方式來調用,加上括號,拿上例子來說就是如果寫成person.sayHello =sayHi(),在調用sayHello的時候就可以直接用person.sayHello或者person.sayHello()了,二者都實現相同的效果。
百度知道的回答:
函數只要是要調用它進行執行的,都必須加括號。此時,函數()實際上等於函數的返回值。當然,有些沒有返回值,但已經執行了函數體內的行為,這個是根本,就是說,只要加括號的,就代表將會執行函數體代碼。
不加括號的,都是把函數名稱作為函數的指針,用於傳參,此時不是得到函數的結果,因為不會運行函數體代碼。它只是傳遞了函數體所在的地址位置,在需要的時候好找到函數體去執行。
以上這篇淺談js中調用函數時加不加括號的問題 就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。