使用变量名绑定JavaScript函数的名称

时间:2015-02-19 17:14:13

标签: javascript anonymous-function extends

我遇到以下问题:

enter image description here

我认为问题很明显,匿名函数不会取其变量的名称。

因此,如何扩展Function Object构造函数以根据受影响的变量为函数命名?

2 个答案:

答案 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存在内存泄漏和与命名函数表达式相关的范围相关错误。)