Js中caller和callee的區別


1 :caller 返回一個調用當前函數的引用 如果是由頂層調用的話 則返回null

(舉個栗子哈 caller給你打電話的人  誰給你打電話了 誰調用了你 很顯然是下面a函數的執行 只有在打電話的時候你才能知道打電話的人是誰 所以對於函數來說 只有caller在函數執行的時候才存在)

      var callerTest = function() {

           console.log(callerTest.caller) ;  

     } ;

      function a() {

           callerTest() ;   

     }

     a() ;//輸出function a() {callerTest();}

     callerTest() ;//輸出null 

 

2 :callee 返回一個正在被執行函數的引用  (這里常用來遞歸匿名函數本身 但是在嚴格模式下不可行)

     callee是arguments對象的一個成員 表示對函數對象本身的引用 它有個length屬性(代表形參的長度)

     var c = function(x,y) {

             console.log(arguments.length,arguments.callee.length,arguments.callee)

      } ;

     

     c(1,2,3) ;//輸出3 2 function(x,y) {console.log(arguments.length,arguments.callee.length,arguments.callee)} 

   


免責聲明!

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



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