首页  >  文章  >  web前端  >  您可以在没有'eval”的情况下在 JavaScript 中创建运行时命名的函数吗?

您可以在没有'eval”的情况下在 JavaScript 中创建运行时命名的函数吗?

Linda Hamilton
Linda Hamilton原创
2024-11-12 18:21:02915浏览

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