今天學習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
那么什么時候需要加括號,什么時候不需要加括號呢?
函式只要是呼叫它進行執行的,都必須加括號,此時,函式實際上等于函式的回傳值或者執行效果,當然有些沒有回傳值,但已經執行了函式體內的行為,就是說:加括號的就代表將會執行函式體代碼,
不加括號的:都是把函式名稱作為函式的指標,一個函式的名稱就是這個函式的指標,此時不是得到函式的結果,因此不會執行函式體代碼,它只是傳遞了函式體所在的地址位置,在需要的時候好找到函式體去執行,
總結:
函式帶括號,會直接執行函式代碼體的內容,
函式不帶括號,則相當于一個指標,會指向函式,但是不執行函式體代碼內容,當符合函式執行條件的時候,再執行函式體代碼,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/246492.html
標籤:其他
