首页 >web前端 >js教程 >您可以在不使用'eval”或非标准功能的情况下动态命名 JavaScript 函数吗?

您可以在不使用'eval”或非标准功能的情况下动态命名 JavaScript 函数吗?

DDD
DDD原创
2024-11-17 11:08:01635浏览

Can You Dynamically Name JavaScript Functions Without Using `eval` or Non-Standard Features?

在 JavaScript 中创建具有动态名称的函数

可以在不诉诸 eval 或非标准 JavaScript 功能的情况下动态为函数分配真实名称吗?在调试上下文中查找具有可识别名称的函数时会出现此问题。

ECMAScript 2015 及更高版本 (ES6) 的解决方案

ES2015 引入了一个解决方案。将匿名函数表达式分配给对象属性可以为函数提供该属性的名称。这与计算属性名称相结合,允许函数命名而不依赖于函数构造函数或 eval。

在 ES2015 中,以下代码片段创建一个具有动态名称的函数:

const dynamicName = "foo" + Math.floor(Math.random() * 1000);
const obj = {
    [dynamicName]() {
        throw new Error();
    },
};
const f = obj[dynamicName];

The函数的名称可以通过其 name 属性检索或在错误堆栈跟踪中观察:

console.log("Function's `name` property: " + f.name + " (see compatibility note)");

try {
    f();
} catch (e) {
    console.log(e.stack);
}

请注意,某些浏览器可能不会在堆栈跟踪中显示名称。

以上是您可以在不使用'eval”或非标准功能的情况下动态命名 JavaScript 函数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn