无需 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中文网其他相关文章!