Javascript 用冲突的局部变量重新定义全局变量

Javascript 用冲突的局部变量重新定义全局变量,javascript,scope,global-variables,local-variables,Javascript,Scope,Global Variables,Local Variables,因此,我试图了解JavaScript的作用域,并查找有关它的大量信息。我看到很多关于人们不小心制造局部变量与全局变量冲突的问题 但我想知道是否有一种方法可以改变全局变量,尽管存在冲突的局部变量。 比如: 是否有一种方法可以在局部变量名冲突的情况下更改全局变量值 当我尝试this.globalVariable=7将7打印为输出时,它不起作用。有人能解释一下为什么这个。访问不起作用,或者如果出现名称冲突的局部变量,是否有办法更改全局变量 显然,以这种方式编写代码是没有意义的,但我认为我理解this.

因此,我试图了解JavaScript的作用域,并查找有关它的大量信息。我看到很多关于人们不小心制造局部变量与全局变量冲突的问题

但我想知道是否有一种方法可以改变全局变量,尽管存在冲突的局部变量。 比如:

是否有一种方法可以在局部变量名冲突的情况下更改全局变量值

当我尝试
this.globalVariable=7
将7打印为输出时,它不起作用。有人能解释一下为什么
这个。
访问不起作用,或者如果出现名称冲突的局部变量,是否有办法更改全局变量


显然,以这种方式编写代码是没有意义的,但我认为我理解
this.
关键字总是指定全局变量/对象?

您可以使用window['globalVariable']=7

但这不是一个好的解决方案。真的没有

“this”变量通常指当前函数的作用域,除非它绑定到其他对象或被调用/应用(.call/.apply)。我建议用谷歌搜索函数范围,因为它会让人很困惑

如果您还有任何问题(三倍),我正在使用Skype

“我想我知道
this.
关键字总是指定全局变量/对象?”

否。的值取决于函数的调用方式以及该函数是否处于

在浏览器中,全局变量是
窗口
对象的属性,因此请使用:

window.globalVariable = 7;
有时
等于
窗口
,但通常不是。(我的意思不是说听起来像
这个
只是随机设置的;有一种方法适用。)


请注意,如果您发现自己需要区分全局变量和局部变量,您很可能使用了太多的全局变量。

此和范围的可能重复是两件不同的事情。函数的作用域取决于定义它的位置(即,它嵌套在哪些其他函数中,如果有的话),与此的设置无关。
window.globalVariable = 7;