首页 > web前端 > js教程 > 您可以在 JavaScript 中创建动态命名函数而不使用'eval()”吗?

您可以在 JavaScript 中创建动态命名函数而不使用'eval()”吗?

Linda Hamilton
发布: 2024-11-11 16:51:03
原创
385 人浏览过

Can You Create Dynamically Named Functions in JavaScript Without Using `eval()`?

无需 Eval 的动态函数创建

问题:是否可以创建一个具有运行时确定名称的函数不诉诸 eval() 并仅使用 pure JavaScript?

ECMAScript 2015 的答案:

是的,ES2015 引入了一个解决方案。分配给对象属性的匿名函数表达式现在继承属性名称作为其函数名称。这可以与计算属性名称结合,允许创建具有动态名称的函数。

示例:

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

console.log("Function's `name` property: " + f.name); // Logs: "foo###" (where ### is 1-3 digits)
登录后复制

在 ES2015 中,此方法确保函数有一个名称并且它出现在调试器的堆栈跟踪中。但请注意,Edge 和 Safari 可能不会在堆栈跟踪中显示函数名称。

以上是您可以在 JavaScript 中创建动态命名函数而不使用'eval()”吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板