js中callee與caller的區別

2022-05-22 07:18:10 字數 816 閱讀 9938

callee是物件的乙個屬性,該屬性是乙個指標,指向引數arguments物件的函式

首先我們來寫個階成函式:

function chen(x) else;

};從這個函式中可以看出來,用到了遞迴函式,要是改變了函式名,裡面的函式名也要隨著改變,這樣很不方便所以我們用callee來試試

function chen(x)else;

};我們來分析一下為什麼這樣寫:根據callee的定義,可以看出來callee是arguments物件的乙個屬性,指向arguments物件的函式,這個函式就是chen(chen=arguments.callee),這樣解釋應該可以理解了吧。

caller是函式物件的乙個屬性,該屬性儲存著呼叫當前函式的函式的引用(指向當前函式的直接父函式)

先來個例子吧

function a();

function b();

a(); //結果就是彈出函式a和內容

我們來解釋一下吧,首先函式b的屬性caller呼叫當前函式b的函式引用a(就是指向當前函式b的父函式a),所以結果就是彈出 function a();

那麼了解了caller和callee,那麼可以不可以將二者結合在一起來使用呢

function b();

從這個**可以看出b函式中呼叫了b函式名,這樣當函式名改變時就很不方便,我們需要替換裡面的那個b

前面我們知道用什麼方法可以指向當前物件,下面我們就來修改一下:

(function a())();

function b();

從**中可以看出我們用arguments.callee代替了b函式,所以解決了一下麻煩。。。。。

Js中caller和callee的區別

1 caller 返回乙個呼叫當前函式的引用 如果是由頂層呼叫的話 則返回null 舉個栗子哈 caller給你打 的人 誰給你打 了 誰呼叫了你 很顯然是下面a函式的執行 只有在打 的時候你才能知道打 的人是誰 所以對於函式來說 只有caller在函式執行的時候才存在 var callertest...

Js中caller和callee的區別

1 caller 返回乙個呼叫當前函式的引用 如果是由頂層呼叫的話 則返回null var callertest function function a a 輸出function a callertest 輸出null2 callee 返回乙個正在被執行函式的引用 這裡常用來遞迴匿名函式本身 但是在...

Js中caller和callee的區別

1 caller 返回乙個呼叫當前函式的引用 如果是由頂層呼叫的話 則返回null 舉個栗子哈 caller給你打 的人 誰給你打 了 誰呼叫了你 很顯然是下面a函式的執行 只有在打 的時候你才能知道打 的人是誰 所以對於函式來說 只有caller在函式執行的時候才存在 var callertest...