假设我有一个函数数组:
let myArray = [foo, bar, baz];
我想将其转换为带有函数名称的字符串数组:
let myArrayAsStrings = ['foo', 'bar', 'baz'];
我怎样才能做到这一点?
我尝试过这样做
myArray.map(fn => fn.name)
但是我认为我的 babel 配置破坏了函数名称,因此不能保证名称相同。
想知道是否有某种我不知道的“将变量名称转换为字符串”方法?
最佳答案
尚不清楚 foo
、bar
和 baz
是否是普通函数(function foo() {}
)、未命名函数 (var foo = funtion () {}
) 或箭头函数(只能是匿名函数)。 fn.name
仅适用于第一种情况,其他两种情况没有名称。
理论上,这可能是一种解决方法:
var myArrayAsStrings = Object.keys({ foo, bar, baz });
这将首先将每个函数存储为属性,然后我们可以从对象中提取属性名称作为键数组。该解决方案的缺点是无法保证顺序。
但是,如果存在某种丑化,那么代码中的原始名称将会丢失。
关于javascript - 将函数数组转换为字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60918248/