1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-27 20:32:21 +00:00

edit function

This commit is contained in:
ruanyf 2015-11-07 21:59:46 +08:00
parent bb909143a9
commit 95118cfcee

View File

@ -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();
```
### 递归函数的改写