杏耀註冊平台官網_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  

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

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

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


總結:

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

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

作者:Schieber

出處:https://www.cnblogs.com/xiqingbo/p/Issue-02.html

站長推薦

1.雲服務推薦: 國內主流雲服務商,各類雲產品的最新活動,優惠券領取。地址:阿里雲騰訊雲華為雲

2.廣告聯盟: 整理了目前主流的廣告聯盟平台,如果你有流量,可以作為參考選擇適合你的平台點擊進入

鏈接: http://www.fly63.com/article/detial/10048