我希望能够获取一个字符串并使用它来检索具有该字符串名称的常量的值。特别是,常数将等于箭头函数。
const foo = (bar) => { return bar }
我预计它会出现在window对象中,但它不会出现:
let fn = window['foo'] // undefined
现在,我能弄清楚如何做到这一点的唯一方法是使用旧的函数语法:
function foo(bar) { return bar }
let fn = window['foo'] // function foo(bar) { return bar }
当函数存储在常量中时,有没有办法从函数名字符串中获取函数?
编辑:
我觉得有必要澄清为什么我要开始定义这样的功能,因为大多数回复似乎都认为区别很重要。它基本上归结为范围和可变性。
箭头函数处理this
关键字的方式使用箭头函数更容易理解,我认为应该是标准行为,除非明确要求旧行为。
其次,可变性与JavaScript一起工作的方式,我认为将函数定义为常量更安全一些。例如:
function foo(bar) { return bar }
// Elsewhere
let foo = 4;
// Back at the ranch
foo("return this string please") // foo is not a function.
最终,我认为这只会减少可变性,并且在使用this
时也会减少意外。
答案 0 :(得分:2)
只有全局变量在全局对象上被赋予匹配属性。没有别的东西,包括常数,确实如此。
除常量本身外,常量的值不会自动出现在任何地方。
如果你想通过字符串访问它,那么将它存储为一个对象的属性(最好不是全局对象,这是一个混乱的混乱,有很大的风险与其他代码冲突)。