但是还有一个问题,MDN的文档里明确指出
警告
:在 ECMAScript 第五版 (ES5) 的 严格模式 中禁止使用 arguments.callee()。
哎呀,原来在ES5的 use strict;
中不给用啊,那么在ES6中,我们换个ES6的arrow function
写写看:
((f) => console.log(f(10)))( (n) => n <= 1? 1: arguments.callee(n-1))//Uncaught ReferenceError: arguments is not defined(…)
有一定ES6基础的同学,估计老早就想说了, 箭头函数 就是个简写形式的函数表达式,并且它拥有词法作用域的 this
值(即不会新产生自己作用域下的 this
, arguments
, super
和 new.target
等对象),且都是匿名的。
那怎么办呢?嘿嘿,我们需要借助一点FP的思想了。