繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM