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的用法一章节。

回复

我来回复
  • 暂无回复内容