mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-27 20:32:21 +00:00
edit function
This commit is contained in:
parent
bb909143a9
commit
95118cfcee
@ -1144,7 +1144,16 @@ factorial(5, 1) // 120
|
||||
|
||||
由此可见,“尾调用优化”对递归操作意义重大,所以一些函数式编程语言将其写入了语言规格。ES6也是如此,第一次明确规定,所有ECMAScript的实现,都必须部署“尾调用优化”。这就是说,在ES6中,只要使用尾递归,就不会发生栈溢出,相对节省内存。
|
||||
|
||||
注意,只有开启严格模式,尾调用优化才会生效。由于一旦启用尾调用优化,`func.arguments`和`func.caller`这两个函数内部对象就失去意义了,因为外层的帧会被整个替换掉,这两个对象包含的信息就会被移除,所以在严格模式下,这两个对象也是不可用的。
|
||||
注意,只有开启严格模式,尾调用优化才会生效。由于一旦启用尾调用优化,`func.arguments`和`func.caller`这两个函数内部对象就失去意义了,因为外层的帧会被整个替换掉,这两个对象包含的信息就会被移除。严格模式下,这两个对象也是不可用的。
|
||||
|
||||
```javascript
|
||||
function restricted() {
|
||||
"use strict";
|
||||
restricted.caller; // 报错
|
||||
restricted.arguments; // 报错
|
||||
}
|
||||
restricted();
|
||||
```
|
||||
|
||||
### 递归函数的改写
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user