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

为何JS调用函数后可在外部引用其内部变量?

问题原因解析

先看对应场景的代码示例:

function test() {
  // 未使用 var/let/const 关键字,直接赋值
  num = 10;
}

// 未调用函数时访问
console.log(num); // 抛出 ReferenceError: num is not defined
// 调用函数后访问
test();
console.log(num); // 输出 10

核心原因:隐式全局变量的创建时机

  • 当你在函数内部直接给未声明的变量赋值时(比如num = 10),JavaScript会自动在全局作用域创建这个变量,但这个创建动作只有在函数执行时才会触发。
  • 函数未调用时,该变量从未被创建,外部访问自然触发ReferenceError。
  • 函数调用后,赋值操作完成,全局作用域中生成了这个变量,外部就能正常访问。

若使用声明关键字(var/let/const)

如果用var在函数内部声明变量,无论函数是否调用,外部都无法访问——因为var的作用域限定在当前函数内部:

function test() {
  var num = 10;
}

console.log(num); // 始终抛出 ReferenceError,调用函数后也是如此

let/const是块级作用域,同样仅存在于函数内部,外部无法访问。


内容的提问来源于stack exchange,提问作者Ahmed M. Abd ElGhany

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 11:27:12