浅谈arguments.callee

  在函数内部有两个特殊对象:this和arguments,其中,arguments主要用于保存函数的参数,但这个对象还有一个名叫callee的属性,该属性是个指针,指向拥有这个arguments对象的函数。
  arguments.callee一般用于递归算法,如果函数有名字,而且名字以后不会变的情况下直接递归调用函数即可。否则使用arguments.callee较好。

function factorial(num){    
   if (num <=1) {         
     return 1;     
   } else {         
     //return num * factorial(num-1)  
     return num * arguments.callee(num-1)   
   } 
}  

  但是现在已经不推荐使用arguments.callee了,访问arguments对象是非常昂贵的操作,它是一个很大的对象,每次递归调用访问它的时候都会重新创建,影响现代浏览器的性能,还会影响闭包。
   接受参数n=5,不用for循环输出数组【1,2,3,4,5】,这就会想到递归

  • 使用arguments.callee()
  • 给函数命名
function show(num){    
  let arr=[]
  return (function fn(){
      arr.unshift(num)
      num--
      if(num!=0)
        //arguments.callee()
        fn()
      return arr
    })
}  

  每天最开心就是学到知识的时候,哦耶✌!
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值