Skip to content

Commit 95118cf

Browse files
committed
edit function
1 parent bb90914 commit 95118cf

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

docs/function.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1144,7 +1144,16 @@ factorial(5, 1) // 120
11441144

11451145
由此可见,“尾调用优化”对递归操作意义重大,所以一些函数式编程语言将其写入了语言规格。ES6也是如此,第一次明确规定,所有ECMAScript的实现,都必须部署“尾调用优化”。这就是说,在ES6中,只要使用尾递归,就不会发生栈溢出,相对节省内存。
11461146

1147-
注意,只有开启严格模式,尾调用优化才会生效。由于一旦启用尾调用优化,`func.arguments``func.caller`这两个函数内部对象就失去意义了,因为外层的帧会被整个替换掉,这两个对象包含的信息就会被移除,所以在严格模式下,这两个对象也是不可用的。
1147+
注意,只有开启严格模式,尾调用优化才会生效。由于一旦启用尾调用优化,`func.arguments``func.caller`这两个函数内部对象就失去意义了,因为外层的帧会被整个替换掉,这两个对象包含的信息就会被移除。严格模式下,这两个对象也是不可用的。
1148+
1149+
```javascript
1150+
function restricted() {
1151+
"use strict";
1152+
restricted.caller; // 报错
1153+
restricted.arguments; // 报错
1154+
}
1155+
restricted();
1156+
```
11481157

11491158
### 递归函数的改写
11501159

0 commit comments

Comments
 (0)