JavaScript、jQuery函數調用時加括號()和不加括號的區別

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

相關文章
相關標籤/搜索