为何使用let和const声明的变量无法通过window对象动态调用?
var与const全局变量的window访问差异
当你用var声明存储对象的全局变量时,该变量会自动挂载到window对象上,因此可以结合字符串拼接的方式动态调用它;但用const(或let)声明的全局变量不会被挂载到window,无法通过这种方式访问。
可正常运行!
var obj_1 = { say: "Hello World" } str = "obj_" + 1 console.log(window[str])
这段代码中,var声明的obj_1作为全局变量成为了window的属性,通过window[str]能成功获取到目标对象,控制台会输出{ say: 'Hello World' }。
无法运行
const obj_1 = { say: "Hello World" } str = "obj_" + 1 console.log(window[str])
这里const声明的obj_1不会被挂载到window对象,window[str]会返回undefined,控制台输出undefined。
内容的提问来源于stack exchange,提问作者Maik Lowrey
相关产品推荐
相关产品推荐

