From 95118cfceeec548511d183152cf51ed3689153ee Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 7 Nov 2015 21:59:46 +0800 Subject: [PATCH] edit function --- docs/function.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/function.md b/docs/function.md index 25e9cba..1500843 100644 --- a/docs/function.md +++ b/docs/function.md @@ -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(); +``` ### 递归函数的改写