• 原生js 函数 callee属性


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

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

    我们在输出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_判断浏览器.
    JQ_使用AJAX获取SINA股票代码
    Struts2中的OGNL详解
    CSS原理与CSS经验分享
    Struts 与 Velocity 的集成
    30条HTML代码编写指南 for入门者
    OGNL使用小结
    Visual C++ 6.0 插件系列介绍
    C语言编译过程总结详解
    Web.xml配置详解
  • 原文地址:https://www.cnblogs.com/evilliu/p/10064730.html
Copyright © 2020-2023  润新知