206
|
pcorcoran · 技术社区 · 16 年前 |
![]() |
1
258
早期版本的JavaScript不允许命名函数表达式,因此我们无法生成递归函数表达式:
然而,这实际上是一个非常糟糕的解决方案,因为这(连同其他参数、被调用方和调用方问题)使得内联和尾部递归在一般情况下不可能实现(您可以通过跟踪等在某些情况下实现它,但即使是最好的代码也是次优的,因为不需要进行检查)。另一个主要问题是递归调用将获得不同的
无论如何,EcmaScript 3通过允许命名函数表达式解决了这些问题,例如:
这有许多好处:
我才意识到除了其他问题之外
如果我们不能保证一个功能
如果js解释器不能保证在调用时提供的所有参数都是数字,那么它需要在内联代码之前插入所有参数的检查,或者不能内联函数。
|
![]() |
2
89
|
![]() |
3
29
命名函数
比
caller 财产:
哪个比什么好
弃用是由于当前ECMAScript design principles . |
![]() |
4
0
第一次调用的阶乘获取对象,但对于递归调用则不是这样。 |