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

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

DDD
发布: 2024-11-17 11:08:01
原创
687 人浏览过

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

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

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

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

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

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

1

2

3

4

5

6

7

const dynamicName = "foo" + Math.floor(Math.random() * 1000);

const obj = {

    [dynamicName]() {

        throw new Error();

    },

};

const f = obj[dynamicName];

登录后复制

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

1

2

3

4

5

6

7

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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板