我需要获取在调用时定义为表达式的匿名函数的名称。
在以下示例中,我能够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
获取名称。虽然,这不是我正在寻找的解决方案。
是否可以获取在被调用时定义为表达式的匿名函数的名称?如果我想实现这个目的,我是否也被迫给这个函数命名?
答案 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());