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