博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
函数表达式--递归
阅读量:5739 次
发布时间:2019-06-18

本文共 672 字,大约阅读时间需要 2 分钟。

递归

递归函数是在一个函数通过名字调用自身的情况下构成的

function f(num) {    if (num <= 1) {        return 1;    } else {        return num * f(num - 1)    }}f(3) // 6var anotherFactorial = f;f = null; //f指向一个空指针alert(anotherFactorial(4)); //出错!

arguments.callee 是一个指向正在执行的函数的指针,因此可以用它来实现对函数的递归调用

function f(num) {    if (num <= 1) {        return 1;    } else {        return num * arguments.callee(num-1)    }}f(3) // 6var anotherFactorial = f;f = null; //f指向一个空指针alert(anotherFactorial(4)); //24

但在严格模式下,不能通过脚本访问 arguments.callee ,访问这个属性会导致错误。不过,可以使用命名函数表达式来达成相同的结果

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

这种方式在严格模式和非严格模式下都行得通

转载地址:http://mafzx.baihongyu.com/

你可能感兴趣的文章
(2010-8-31) awk内存泄漏以及缓慢的正则表达式计算速度
查看>>
基于PHPUnit编写测试用例
查看>>
iOS UINavigationBar-导航栏、UINavigationItem-导航项
查看>>
51nod 1284:2 3 5 7的倍数 容斥原理
查看>>
设计mooon调度器遇到的难题
查看>>
学JAVA争做IT精英
查看>>
ipad应用打包
查看>>
Apache和Nignx基于三种方式搭建web站点并设置用户访问控制达到优化整个站点性能...
查看>>
Android 手机应用开发经验之手势识别Gesture的
查看>>
Longest Palindromic Substring
查看>>
ibooks 3d 翻转效果 flip 3d
查看>>
URAL 1992 CVS 可持久化链栈
查看>>
eclipse 列编辑
查看>>
文件方式实现完整的英文词频统计实例
查看>>
Oracle活动会话历史(ASH)及报告解读
查看>>
Project Euler Problem 7: 10001st prime
查看>>
HDU1113 POJ1318 UVA642 ZOJ1181 UVALive5328 Word Amalgamation【MAP+排序】
查看>>
python制作验证码
查看>>
Java Thread(一) Outline
查看>>
谈一谈AGP
查看>>