Skip to main content
 首页 » 编程设计

javascript之JavaScript 中的全局变量到局部变量

2025年01月19日20myhome

我知道全局变量是在函数外部声明时创建的(说 W3Schools )。

如果我创建一个全局变量并在函数中编辑它,它会变成局部变量吗?函数赋予的新值是否成为全局值?

请您参考如下方法:

一般来说,不,编辑全局不会使其成为本地:

var myglob = 5; 
function incGlob() { 
    myglob = myglob + 1; 
} 
 
incGlob(); 
console.log(myglob); // is 6 now 

但是,如果您将全局变量作为参数传递,则该参数是本地副本:

var myglob = 5; 
function incArg(myloc) { 
    myloc = myloc + 1; 
} 
 
incArg(myglob); 
console.log(myglob); // is still 5 

请注意,对象是通过引用传递的,因此编辑参数变量的成员变量会更改传入的原始对象的成员变量:

var myglob = { foo:5 }; 
function editLoc(myloc) { 
    myloc.foo = 6; 
} 
 
editLoc(myglob); 
console.log(myglob.foo); // foo is 6 now 

最后,请注意上面的 editLoc 中的局部变量只是一个引用。如果我们试图覆盖整个对象(而不是成员变量),该函数只会丢失对原始对象的引用:

var myglob = { foo:5 }; 
function clobberLoc(myloc) { 
    myloc = { bar:7 }; 
} 
 
clobberLoc(myglob); 
console.log(myglob.foo); // myglob is unchanged... 
// ...because clobberLoc didn't alter the object, 
// it just overwrote its reference to the object stored in myglob