一、在es5中,函数中有arguments参数,该参数是一个包含函数传入的参数的类数组。

1     <script>
2         function myArrgu(x){
3             console.log(arguments);
4         }
5         myArrgu(1,2,3)
6     </script>

原生js 函数 callee属性

我们在输出arguments的时候,我发现一个属性callee,这个属性,在非严格模式下使用。在严格模式下会报错。

arguments.callee指向当前arguments指向的函数。

在特定情况下,我们在使用这个属性的时候,在函数递归或者其他地方使用的时候,可以不使用函数名变量来进行调用。

1         function  diplus(num){
2             if(num==1){
3                 return 1;
4             }else{
5                 return  num*diplus(num-1);
6             }
7         }
8         console.log(diplus(4));

 如上是简单的阶乘函数。但是我们在递归的时候是使用函数名的引用。函数名和这个函数紧紧耦合在一起。我们如果使用arguments.callee的时候,就会解决这个耦合性。

 1         function  diplus(num){
 2             if(num==1){
 3                 return 1;
 4             }else{
 5                 return  num*arguments.callee(num-1);
 6             }
 7         }
 8         var funcA=diplus;
 9         diplus=function(){
10             return 0;
11         }
12         console.log(funcA(2));
13         console.log(diplus(4));

 原生js 函数 callee属性

 

相关文章:

  • 2021-11-01
  • 2021-12-25
  • 2021-06-12
  • 2021-10-10
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-15
猜你喜欢
  • 2021-07-24
  • 2021-10-03
  • 2021-09-02
  • 2022-02-10
  • 2022-12-23
相关资源
相似解决方案