首頁 >web前端 >js教程 >您可以在沒有'eval”的情況下在 JavaScript 中建立運行時命名的函數嗎?

您可以在沒有'eval”的情況下在 JavaScript 中建立運行時命名的函數嗎?

Linda Hamilton
Linda Hamilton原創
2024-11-12 18:21:02941瀏覽

Can You Create Runtime-Named Functions in JavaScript Without `eval`?

JavaScript 中不帶Eval 的運行時命名函數

是否可以建立一個JavaScript 函數,其名稱在運行時確定,而不使用eval 或非常規的引擎特定功能?是的,現在 ECMAScript 2015 (ES6) 及更高版本可以實現這一點。

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn