[英]Binding a name for JavaScript function using variable name
我遇到以下問題:
我認為問題很明顯,匿名函數不會取其變量的名稱。
因此,如何擴展Function Object
Constructor以根據受影響的變量為函數命名?
你可以這樣做:
var i_am = function i_am() { return "I Sure Am!"; }
這種語法一直有效,但過去有一些瀏覽器的怪癖 。 如果擔心這些怪癖,你可以隨時這樣做:
function i_am() {
return "I Sure Am!";
}
var i_am = i_am;
這是一個有點腥,因為在本地范圍“i_am”結合從功能劫持,但功能仍保留了內部約束。
現在,沒有辦法追溯性地為函數提供內部綁定的名稱。 函數在創建時幾乎被凍結(如果你考慮語言語義和優化,那就是應該的方式)。
你不能。
在創建函數時確定函數的名稱。
如果使用未命名的函數表達式,則將創建該函數(沒有名稱), 然后將其分配給變量。
由於變量在此之前不會出現在函數附近,因此不能用於確定函數的名稱。
如果要為函數表達式創建的函數提供名稱,請使用命名函數表達式。
var addFn = function addFn () {};
(警告:舊版本的Internet Explorer存在內存泄漏和與命名函數表達式相關的范圍相關錯誤)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.