callee与caller的区别简单介绍

callee与caller的区别简单介绍:
对于外表比较相似的东西,我们通常比较关注他们的区别是什么。
标题中的两个东西外表就比较相似,下面就来介绍一下它们的区别有哪些。
一.callee属性:
此属性属于arguments对象,也就是说使用的时候要用如下形式:

arguments.callee

它指向的是arguments所属的函数。
代码实例如下:

function func(num){
  if (num<=1) {
    return 1;
  }
  else{
    return num*arguments.callee(num-1);
  };
};
console.log(func(5));

上面的通过arguments.callee实现了递归效果。
二.caller属性:
此属性属于一个函数对象,它指向当前函数所属于的直接父函数,也可以说调用当前函数的函数。
代码实例如下:

function father(){
  children();
};
function children(){
  console.log(children.caller);
};
father();

上面简单介绍了两个属性的基本用法,当然区别也就看出来了。
更多内容可以参阅arguments.callee和caller的用法一章节。

原文地址是:http://www.softwhy.com/forum.php?mod=viewthread&tid=17763

更多内容可以参阅http://www.softwhy.com/jsshili/

你可能感兴趣的:(callee与caller的区别简单介绍)