在 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 有scopes 的概念。对于这种情况,
var varG
语句仅在 varG
函数范围内声明一个 myOtherFunction()
变量。当myFunction()
被调用时,它有自己的范围,它不“继承”或以其他方式知道它调用的范围,因此不知道varG
,因此错误。
var 不仅仅意味着声明的变量是全局变量。如果你想用 var 声明一个全局变量。这样做
var varG;
function myFunction(){
let var1 = varG
console.log(var1)
}
function myOtherFunction(){
varG = document.all
myFunction()
}
myOtherFunction()