获取变量函数表达式的名称?

时间:2016-05-26 11:52:28

标签: javascript function variables expression

问题

我需要获取在调用时定义为表达式的匿名函数的名称。

到目前为止我尝试了什么

在以下示例中,我能够console.log这样的函数名称:

function init() {
    console.log(init.name); // Outputs "init".
}

console.log将分别输出init。当我将函数定义为表达式时,console.log(init.name);将不再输出init,因为从技术上讲,我要求提供匿名函数的名称(由console.log(init);证明第二个例子)。

var init = function() {
    console.log(init.name); // Outputs nothing.
};

以下示例将首先解决问题,如robertklep建议的那样:

var init = function init() {
    console.log(init.name); // Outputs "init".
};

这样,我给匿名函数命名,我可以用init.name获取名称。虽然,这不是我正在寻找的解决方案。

问题

是否可以获取在被调用时定义为表达式的匿名函数的名称?如果我想实现这个目的,我是否也被迫给这个函数命名?

3 个答案:

答案 0 :(得分:4)

你不能,因为这样编码,它是一个anonymous function(换句话说:它不会拥有一个名字)。< / p>

但如果你愿意,你可以给它一个名字:

var init = function theFunctionName() {
  console.log(init.name); // outputs: theFunctionName
};

答案 1 :(得分:1)

如果您尝试reloadData()

Anonymous function如果没有任何名称,则会显示黑色字符串。

chrome.browserAction.setIcon({path:"my-icon.png"});

但如果你给名字命名,它会给你起名字。

答案 2 :(得分:-2)

你可以这样试试:

console.log(init.toString());