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

标签 javascript variables global local

我知道全局变量是在函数外部声明时创建的(说 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 

关于javascript - JavaScript 中的全局变量到局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10887291/

相关文章:

javascript - 使用 JQuery 选择正确的元素

java - 有没有办法让 Arraylist 元素等于类构造函数?

PHP $this 变量

javascript - 如何在自定义组件内处理 onSubmit

javascript - 将外部文本从 .txt 加载到 html 文件

javascript - 在滚动菜单上更改类,首先单击问题

php - 如何查看另一个 php 文件中定义的变量?

python - 将 python 变量从对象传递给父对象

java - 有没有办法在 null 时自动初始化变量

javascript - 如何在javascript中获取全局命名空间中的对象名称