You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中保持变量同名时获取外部变量的值

问题与解决方案

原代码

var i = 5;
test();

function test() {
  let i = 3;
  alert(i);
}

上述代码执行后会弹出内部let声明的变量i的值3,要求在保持内外两个变量均名为i的前提下,修改代码使弹窗显示外部变量的值5。

可行方案

方案1:通过全局对象访问(浏览器环境)

由于外部的i是var声明的全局变量,在浏览器中会挂载到window全局对象上,直接通过window.i即可绕过内部变量的遮蔽,访问到外部的i:

var i = 5;
test();

function test() {
  let i = 3;
  alert(window.i);
}

方案2:利用暂时性死区特性缓存外部变量

在内部let i声明之前,当前作用域还未创建该变量,此时访问i会向上查找外部作用域的变量,我们可以提前缓存这个值:

var i = 5;
test();

function test() {
  const outerI = i; // 此时i指向外部的全局变量
  let i = 3;
  alert(outerI);
}

方案3:Node.js环境适配

如果是在Node.js环境中,全局变量挂载在globalThis对象上,代码可修改为:

var i = 5;
test();

function test() {
  let i = 3;
  console.log(globalThis.i); // Node.js中用globalThis访问全局变量,alert需替换为console.log
}

内容的提问来源于stack exchange,提问作者darkchampionz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:45:31