javascript callee和caller

arguments的主要用途是保存参数,但是他还有callee属性.

一:callee指向arguments对象的函数.

示例一:

1 function calture(num) {//阶乘计算

2             if (num <= 1) return 1;

3             else {

4                 return num * calture(num - 1);

5             }

6         }

在代码内部出现了calture的调用.这在以后的代码维护中是很不利的,如果某天把外面函数名改了,里面没有改,后果大家知道了吧.

对于这个问题可以这个样子优化的嘛:

1 function calture(num) {//阶乘计算

2             if (num <= 1) return 1;

3             else {

4                 return num * arguments.callee(num - 1);

5             }

6         }

二:caller这个属性中保存着调用当前函数的函数引用,如果是全局作用域中调用,它的值是null.

1  function Me() {

2             You();

3         }

4function You() {

5             alert(You.caller);

6         }

7  Me();

效果:

javascript callee和caller

对上面的代码经行优化一下:

1 function Me() {

2             You();

3         }

4  function You() {

5             alert(arguments.callee.caller); 
6     }
7 Me();

 

你可能感兴趣的:(JavaScript)