javascript - JavaScript 常量存储在浏览器中的哪里?

标签 javascript function window constants arrow-functions

我希望能够获取一个字符串并使用它来检索具有该字符串名称的常量的值。特别是,该常数将等于箭头函数。

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/

相关文章:

javascript - 使用 express 获取、存储和使用 JSON 变量

javascript - 我有一颗 meteor ,一颗随机掉落的 meteor ,我想制造更多 meteor

javascript - 使用 jquery 重写 html 数字

c - 寻找我参加的旧测试的答案,试图了解我应该做什么。(也许是 Malloc 函数?)

javascript - 如何在窗口大小调整时调整 iframe 大小

javascript - 在同一选项卡中启动下载,无需在 Javascript 中打开新选项卡或窗口

javascript - 如何使用 AngularJs 从输入或文本区域中删除特殊字符?

perl - 有人可以解释 Perl 中的哈希吗?

linux - 使用批处理文件或 shell 脚本进行文件传输

javascript - 关闭另一个弹出窗口时调用主窗口中的函数