Javascript中递归的调用
2024-09-28 20:05:50
递归函数就是调用自身,如下所示:
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);
}
}
最新文章
- 使用django开发博客过程记录1——数据库设计
- CentOS 6.5安装在VMWare中Bridge模式下网卡eth0不能自动激活的问题
- 【BZOJ-2721】樱花 线性筛 + 数学
- .net数据库操作
- python学习笔记-(四)列表&;元组
- QQ空间HD(2)-UIPopoverController其它使用
- Unrecognized Windows Sockets error: 0: JVM_Bind 异常怎么办
- 解决ie文本框不能输入和获取焦点问题
- unity中Debug输出控制
- linux中 ECShop的文件不能写
- ios地图小例子和手势的使用 供大家参考一下呦
- Bootstrap_表单_表单控件
- lucene4.0与之前版本的一些改变
- iOS中 本地通知/本地通知详解 韩俊强的博客
- MySQL学习笔记_8_SQL语言基础复习
- 如何使用Git提高研发团队工作效率?
- [dev] 刷HHKP的一般流程及常见错误(多图慎点)
- 【福州活动】| ";福州首届.NET开源社区线下技术交流会";(2018.11.10)
- ELK收集Nginx自定义日志格式输出
- Mac下搭建solr搜索引擎与PHP扩展开发(上)
热门文章
- PyCharm(二)&mdash;&mdash;PyCharm打开本地项目不显示项目文件
- lnmp启用pathinfo并隐藏index.php
- 16.VUE学习之-v-show的使用与v-if的差异对比
- batch-normalization为什么效果好
- Python学习笔记(五)之Python操作Redis、mysql、mongodb数据库
- HDU 2087 HDU 1867 KMP标准模板题
- 源码级强力分析hadoop的RPC机制
- 第三模块 面向对象&; 网络编程基础 实战考核
- mysql之处理金钱小数点后的多余0
- datagrid的增加功能的实现