callee和caller

callee和caller這兩個屬性在命名上非常相似,總是后搞混,現(xiàn)在梳理一下。
callee是arguments的屬性,返回當前函數(shù)的引用。所以常用來做遞歸。

function factorial(num){
    if(num>1){
        return num*arguments.callee(num-1)
    }else{
        return 1
    }
}

caller用于返回調(diào)用當前函數(shù)的函數(shù)。聽起來有點拗口,其實就是返回當前函數(shù)棧的上一層。

function a(){
    console.log(a.caller)
}
function b(){
  a()
}
b()//b

即使是匿名函數(shù)調(diào)用也會返回

(function(){
  a()
})

但是直接訪問、對象訪問均會返回null。

另外,箭頭函數(shù)不支持caller和callee,嚴格模式下為了安全也不支持,所以在開發(fā)中應該避免使用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,692評論 0 4
  • callee是對象的一個屬性,該屬性是一個指針,指向參數(shù)arguments對象的函數(shù)首先我們來寫個階成函數(shù): 從這...
    Joe_Somebody閱讀 1,417評論 0 2
  • arguments是個類數(shù)組對象,用來保存?zhèn)魅牒瘮?shù)中的所有參數(shù),也就是實參對象 arguments對象有個屬性叫c...
    章丸丸閱讀 346評論 0 0
  • 個人博客:https://yeaseonzhang.github.io 花了半個多月的時間,終于又把“JS紅寶書”...
    Yeaseon閱讀 11,747評論 9 52
  • 你似一摟青青的柳 在迷迷濛濛的雨中繡著憂愁 很少看到你會心的一笑 盈盈地在天空里漂流 漂流著春與夏的邂逅 在春天必...
    達時代閱讀 409評論 0 1

友情鏈接更多精彩內(nèi)容