能否通过document、window或其他方式访问被遮蔽的全局变量?
如何访问被遮蔽的全局变量?
当然可以,不同环境下有对应的方法访问被遮蔽的全局变量:
- 浏览器环境:通过
window对象访问。用var声明的全局变量会自动挂载到window上,即便被函数参数或局部变量遮蔽,直接调用window.变量名就能拿到全局版本。 - Node.js环境:可以通过
global或者globalThis对象访问全局变量。
针对你给出的代码示例,修改后就能访问全局的x:
var x = 10; //全局声明的变量 (function abc(x){ //使用同名参数遮蔽x console.log(x); // 打印11 console.log(window.x); // 打印10,成功访问被遮蔽的全局变量x })(11)
注意:如果是用let或const声明的全局变量,在浏览器中不会挂载到window对象上,此时可以用globalThis来统一访问全局对象(globalThis是ES2020引入的标准全局对象,兼容浏览器和Node.js环境)。
内容的提问来源于stack exchange,提问作者Sesha Ganesh
相关产品推荐
相关产品推荐

