递归函数就是调用自身,如下所示:

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

  这是经典的递归调用,但是执行如下代码时会导致出错。

 var anotherFactorial=factorial;
factorial=null;
alert(anotherFactorial(3)); //Uncaught TypeError: factorial is not a function

  上面的代码先把factorial()函数保存在anotherFactorial中,然后将factorial设置为null。结果指向原始函数的指针只剩下一个,在接下来的调用就会出现错误(factorial已经不是函数),此时使用arguments.callee(即指向正在执行函数的指针)可以解决这个问题,即:

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

  但是在严格模式下,不能通过脚本访问aguments.callee。最好的解决方法是使用命名函数表达式,如下:

  var factorial=(function f(num){
if(num<=1){
return 1;
}else{
return num*f(num-1);
}
}

最新文章

  1. 使用django开发博客过程记录1——数据库设计
  2. CentOS 6.5安装在VMWare中Bridge模式下网卡eth0不能自动激活的问题
  3. 【BZOJ-2721】樱花 线性筛 + 数学
  4. .net数据库操作
  5. python学习笔记-(四)列表&amp;元组
  6. QQ空间HD(2)-UIPopoverController其它使用
  7. Unrecognized Windows Sockets error: 0: JVM_Bind 异常怎么办
  8. 解决ie文本框不能输入和获取焦点问题
  9. unity中Debug输出控制
  10. linux中 ECShop的文件不能写
  11. ios地图小例子和手势的使用 供大家参考一下呦
  12. Bootstrap_表单_表单控件
  13. lucene4.0与之前版本的一些改变
  14. iOS中 本地通知/本地通知详解 韩俊强的博客
  15. MySQL学习笔记_8_SQL语言基础复习
  16. 如何使用Git提高研发团队工作效率?
  17. [dev] 刷HHKP的一般流程及常见错误(多图慎点)
  18. 【福州活动】| &quot;福州首届.NET开源社区线下技术交流会&quot;(2018.11.10)
  19. ELK收集Nginx自定义日志格式输出
  20. Mac下搭建solr搜索引擎与PHP扩展开发(上)

热门文章

  1. PyCharm(二)&mdash;&mdash;PyCharm打开本地项目不显示项目文件
  2. lnmp启用pathinfo并隐藏index.php
  3. 16.VUE学习之-v-show的使用与v-if的差异对比
  4. batch-normalization为什么效果好
  5. Python学习笔记(五)之Python操作Redis、mysql、mongodb数据库
  6. HDU 2087 HDU 1867 KMP标准模板题
  7. 源码级强力分析hadoop的RPC机制
  8. 第三模块 面向对象&amp; 网络编程基础 实战考核
  9. mysql之处理金钱小数点后的多余0
  10. datagrid的增加功能的实现