[英]Getting the name of a variable function 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
来获取名字。 虽然,这不是我要寻找的解决方案。
完全被调用时,是否可以获得定义为表达式的匿名函数的名称? 如果要实现此功能,是否也必须给该函数命名?
你不能,因为编码这样的,它是一个匿名函数 (换句话说:它不会有一个名字)。
但是,如果您愿意,可以给它起一个名字:
var init = function theFunctionName() {
console.log(init.name); // outputs: theFunctionName
};
如果您尝试使用.name
则没有任何名称的匿名函数将给出黑色字符串。
var init = function() {
console.log(typeof init.name);// will give blank string
};
但是,如果您给功能起一个名字,它将给您起名字。
您可以这样尝试:
console.log(init.toString());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.