全局变量在另一个函数中不可重用[重复]

问题描述 投票:0回答:2

在 JavaScript 中,语句

var
声明了一个全局变量?!
那为什么

function myFunction(){
  let var1 = varG
  console.log(var1)
}
function myOtherFunction(){
  var varG = document.all
  myFunction()
}
myOtherFunction()

这会显示以下错误:

Uncaught ReferenceError: varG is not defined

如果

myOtherFunction
myFunction
之后也会发生这种情况。

javascript variables global-variables
2个回答
1
投票

JavaScript 有scopes 的概念。对于这种情况,

var varG
语句仅在
varG
函数范围内声明一个
myOtherFunction()
变量。当
myFunction()
被调用时,它有自己的范围,它不“继承”或以其他方式知道它调用的范围,因此不知道
varG
,因此错误。


0
投票

var 不仅仅意味着声明的变量是全局变量。如果你想用 var 声明一个全局变量。这样做

var varG;
function myFunction(){
  let var1 = varG
  console.log(var1)
}
function myOtherFunction(){
   varG = document.all
  myFunction()
}
myOtherFunction()
© www.soinside.com 2019 - 2024. All rights reserved.