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

为何JavaScript函数内var声明的变量无法被其他函数访问?

为什么var声明的变量无法跨函数访问?

你的代码里抛出Uncaught ReferenceError: varG is not defined的核心原因是:你用var在myOtherFunction内部声明的varG不是全局变量,而是该函数的局部变量。

关键知识点:var的作用域规则

var的作用域是函数作用域——也就是说,在函数内部用var声明的变量,只能在这个函数(以及它内部嵌套的函数)的范围内被访问,其他同级函数完全看不到这个变量。myFunction和myOtherFunction是两个独立的函数,myFunction自然无法访问myOtherFunction里的局部变量varG。

如何让变量能被跨函数访问?

如果你需要varG能被myFunction访问,有两种常见方式:

  1. 在全局作用域声明变量
    把varG的声明放在所有函数外面,这样它就成为全局变量,所有函数都能访问:
var varG; // 全局作用域声明变量
function myFunction(){
  let var1 = varG
  console.log(var1)
}
function myOtherFunction(){
  varG = document.all // 直接赋值全局变量
  myFunction()
}
myOtherFunction()
  1. 将变量挂载到全局对象(浏览器环境下是window)
    在myOtherFunction里把变量赋值给window对象,这样它就成为全局属性,其他函数可以通过window访问:
function myFunction(){
  let var1 = window.varG
  console.log(var1)
}
function myOtherFunction(){
  window.varG = document.all // 挂载到全局对象
  myFunction()
}
myOtherFunction()

纠正误解

别误以为只要用var声明就是全局变量——只有在所有函数外部用var声明的变量才是全局变量,函数内部的var声明的都是局部变量,作用域仅限当前函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:30:10