我希望能够获取一个字符串并使用它来检索具有该字符串名称的常量的值。特别是,该常数将等于箭头函数。
const foo = (bar) => { return bar }
我期望它会显示在窗口对象中,但它没有:
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
时也会减少意外情况。
最佳答案
只有全局变量才会在全局对象上分配匹配的属性。没有其他的东西,包括常量,都可以。
常量的值不会自动出现在常量本身之外的任何地方。
如果您想通过字符串访问它,则将其存储为对象的属性(但最好不是全局对象,因为这是一个杂乱无章的困惑,很可能与其他代码发生冲突)。
关于javascript - JavaScript 常量存储在浏览器中的哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42285316/