JavaScript 常量存储在浏览器中的什么位置?
Where are JavaScript constants stored in browser?
我希望能够获取一个字符串并使用它来检索具有该字符串名称的常量的值。特别是,常数将等于箭头函数。
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
时也会减少意外情况。
只有全局 变量 会在全局对象上分配匹配的 属性。没有其他东西,包括常量,都没有。
常量的值不会自动出现在常量本身之外的任何地方。
如果您想通过字符串访问它,则将其存储为对象的 属性(不过最好不是全局对象,这是一个杂乱无章的混乱局面,很可能与其他代码发生冲突) .
我希望能够获取一个字符串并使用它来检索具有该字符串名称的常量的值。特别是,常数将等于箭头函数。
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
时也会减少意外情况。
只有全局 变量 会在全局对象上分配匹配的 属性。没有其他东西,包括常量,都没有。
常量的值不会自动出现在常量本身之外的任何地方。
如果您想通过字符串访问它,则将其存储为对象的 属性(不过最好不是全局对象,这是一个杂乱无章的混乱局面,很可能与其他代码发生冲突) .