JavaScript、jQuery函數調用時加括號()和不加括號的區別。 調用函數時何時選擇加括號(),何時選擇不加括號?ide
今天學習jQuery拿一個功能作練習時,由於存在重複的代碼,因此寫了一個複用的函數提供調用
可是在調用函數的時候卻沒有起任何做用,通過檢查發現問題出如今調用函數時加了括號致使的
那麼在調用函數時,加括號和不加括號有什麼區別呢?因而經過搜索理解後獲得瞭如下的結論:函數
function bracket() { return 0; } // 函數後加括號 var a = bracket(); console.log(a); // 輸出0 // 函數後不加括號 var b = bracket; console.log(b); // 輸出[Function: test]
其中"bracket"函數名是一個對象,而對象是保存在內存中,函數名是指向這個對象的指針。學習
var a = bracket() 函數後面加上括號就表示當即調用
var b = bracket 就是把"bracket"這個函數對象的指針指向b指針
函數只要是調用它進行執行的,都必須加括號。此時,函數實際上等於函數的返回值或者執行效果,固然有些沒有返回值,但已經執行了函數體內的行爲。就是說:加括號的就表明將會執行函數體代碼。對象
不加括號的:都是把函數名稱做爲函數的指針,一個函數的名稱就是這個函數的指針,此時不是獲得函數的結果,所以不會執行函數體代碼。它只是傳遞了函數體所在的地址位置,在須要的時候好找到函數體去執行。ip
函數帶括號,會直接執行函數代碼體的內容。內存
函數不帶括號,則至關於一個指針,會指向函數,可是不執行函數體代碼內容,當符合函數執行條件的時候,再執行函數體代碼。it