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


今天學習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

那么什么時候需要加括號,什么時候不需要加括號呢?

函數只要是調用它進行執行的,都必須加括號。此時,函數實際上等於函數的返回值或者執行效果,當然有些沒有返回值,但已經執行了函數體內的行為。就是說:加括號的就代表將會執行函數體代碼。

不加括號的:都是把函數名稱作為函數的指針,一個函數的名稱就是這個函數的指針,此時不是得到函數的結果,因此不會執行函數體代碼。它只是傳遞了函數體所在的地址位置,在需要的時候好找到函數體去執行。


總結:

函數帶括號,會直接執行函數代碼體的內容。

函數不帶括號,則相當於一個指針,會指向函數,但是不執行函數體代碼內容,當符合函數執行條件的時候,再執行函數體代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM