javascript - 将函数数组转换为字符串数组

标签 javascript

假设我有一个函数数组:

let myArray = [foo, bar, baz];

我想将其转换为带有函数名称的字符串数组:

let myArrayAsStrings = ['foo', 'bar', 'baz'];

我怎样才能做到这一点?

我尝试过这样做

myArray.map(fn => fn.name)

但是我认为我的 babel 配置破坏了函数名称,因此不能保证名称相同。

想知道是否有某种我不知道的“将变量名称转换为字符串”方法?

最佳答案

尚不清楚 foobarbaz 是否是普通函数(function foo() {} )、未命名函数 (var foo = funtion () {}) 或箭头函数(只能是匿名函数)。 fn.name 仅适用于第一种情况,其他两种情况没有名称。

理论上,这可能是一种解决方法:

var myArrayAsStrings = Object.keys({ foo, bar, baz });

这将首先将每个函数存储为属性,然后我们可以从对象中提取属性名称作为键数组。该解决方案的缺点是无法保证顺序。

但是,如果存在某种丑化,那么代码中的原始名称将会丢失。

关于javascript - 将函数数组转换为字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60918248/

相关文章:

javascript - 检查对象是否包含数组中的所有键

javascript - Bootstrap Carousel 为每张幻灯片设置不同的 URL

javascript - FullPage JS固定背景不工作

php - 如何将 PHP 变量传递给 JavaScript 函数?

javascript - 每个 JS : what's the promises equivalent of async.?

javascript - React-Router:不适合我

javascript - 如何以递归方式从嵌套 JSON 中删除所有空数组 childs []

javascript - 如何在使用 javascript 检测到移动设备时从 DIV 中删除悬停效果

javascript - 显示 "Save As"对话框而不是使用 JavaScript 播放音频文件

javascript - Bootstrap Accordion - 折叠时更改顶部面板的位置