1. 程式人生 > >函式呼叫加括號與不加括號的區別

函式呼叫加括號與不加括號的區別

最近鑽研JS的時候遇到了一些問題,實話說JS真的是一門很強大的語言,還需繼續修煉。
今天分享的一點知識是:JavaScript 函式呼叫時帶括號和不帶括號的區別!!!
例子說明: 
例1.
function init(){
    。。。。。。
}
window.onload = init;


例2:
function fun(){
    return 5
}
var a=fun
var b=fun()
a是fun函式,b是5


那麼到底在使用一個函式時需不需要加上()呢?
函式只要是要呼叫它進行執行的,都必須加括號。此時,函式實際上等於函式的返回值或者執行效果,當然,有些沒有返回值,但已經執行了函式體內的行為,就是說,加括號的,就代表將會執行函式體程式碼。
不加括號的,都是把函式名稱作為函式的指標,一個函式的名稱就是這個函式的指標,此時不是得到函式的結果,因為不會執行函式體程式碼。它只是傳遞了函式體所在的地址位置,在需要的時候好找到函式體去執行。

例如window.onload=init;
init函式並不會在這行程式碼時就執行,瀏覽器載入文件時這句話會被載入,會被告知文件載入完要執行哪個函式,但實際上沒有當時就執行,等到整個文件載入完成之後才會通過init這個指標去執行init()。


所以一般時候我們都是採用的是無括號的原因。這也是由於括號的二義性,因為括號是“函式呼叫運算子”,相當於在執行這樣一個函式,所以產生的問題在理解了之後也就理解了。