是否可以建立一個JavaScript 函數,其名稱在運行時確定,而不使用eval 或非常規的引擎特定功能?是的,現在 ECMAScript 2015 (ES6) 及更高版本可以實現這一點。
在 ES6 中,指派給物件屬性的匿名函數表達式採用該屬性的名稱財產。這可以與計算屬性名稱組合來命名函數,而無需使用 new Function 或 eval。例如:
const dynamicName = "foo" + Math.floor(Math.random() * 1000); const obj = { [dynamicName]() { throw new Error(); }, }; const f = obj[dynamicName];
這將建立一個名為「foo###」的函數,其中 ### 是一個隨機的 1-3 位數字。
函數的名稱屬性將反映動態名稱。上面程式碼片段中的相容性說明指的是 Edge 和 Safari 目前在堆疊追蹤中不顯示該名稱。
以上是您可以在沒有'eval”的情況下在 JavaScript 中建立運行時命名的函數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!