簡體   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