我遇到以下问题:
我认为问题很明显,匿名函数不会取其变量的名称。
因此,如何扩展Function Object
构造函数以根据受影响的变量为函数命名?
答案 0 :(得分:0)
你可以这样做:
var i_am = function i_am() { return "I Sure Am!"; }
该语法一直有效,但过去曾有some browser quirks about that。如果担心这些怪癖,你可以随时这样做:
function i_am() {
return "I Sure Am!";
}
var i_am = i_am;
这是 little 有点可疑,因为本地范围中“i_am”的绑定是从函数中劫持的,但该函数保留了名称的内部绑定
现在,没有办法追溯性地为函数提供内部绑定的名称。函数在创建时几乎被冻结(如果你考虑语言语义和优化,就应该这样)。
答案 1 :(得分:0)
你不能。
在创建函数时确定函数的名称。
如果使用未命名的函数表达式,则将创建该函数(没有名称)并将然后分配给该变量。
由于变量在此之前不会出现在函数附近,因此不能用它来确定函数的名称。
如果要为函数表达式创建一个名称,请使用命名函数表达式。
var addFn = function addFn () {};
(警告:旧版本的Internet Explorer存在内存泄漏和与命名函数表达式相关的范围相关错误。)