基础知识
函数声明提升
1 | functionA(); |
在执行代码之前会先读取函数声明,所以说函数声明语句可以放在调用函数语句的后面。
声明函数还有另外一种方式,叫做函数表达式
1 | let functionA = function () { |
这种声明的函数叫做匿名函数
,也叫做拉姆达函数
递归
1 | function factorial(num) { |
这是为什么报错呢?因为,我们将factorial函数体内容给了otherFactorial了,并且将factorial指向为空,当调用该函数的时候,必须要调用factorial才能完成递归过程,所以factorial并不存在了,所以导致了报错。
那我们可以通过什么途径解决呢?可以使用arguments.callee()
来获取正在执行的函数的指针。
1 | function factorial(num) { |
在严格模式下arguments.callee
是无法使用的,可以使用下面命名函数的方式代替。
1 | let factorial = ( function f(num) { |