用冲突的局部变量重新定义全局变量
Re-defining global variable with conflicting local variable
所以我试图了解JavaScript的作用域,并查找了很多关于它的信息。我看到了很多关于人们意外生成与全局变量冲突的局部变量的问题。
但我想知道是否有一种方法可以改变全局变量,尽管局部变量存在冲突。类似:
var globalVariable = 6;
var func1 = function() {
this.func2 = function() {
var globalVariable = 99;
= 7;
}
};
print(globalVariable);
有没有一种方法可以更改全局变量值,尽管局部变量名称存在冲突?
当我尝试this.globalVariable = 7
打印7作为输出时,它不起作用。有人能弄清楚为什么this.
访问不起作用吗?或者如果碰巧存在名称冲突的局部变量,是否有办法更改全局变量?
显然,用这种方式编写代码是没有意义的,但我想我明白this.
关键字总是指定全局变量/对象?
"我以为我理解
this.
关键字总是指定全局变量/对象?"
没有。this
的值取决于函数的调用方式以及函数是否处于严格模式。
在浏览器中,全局变量是window
对象的属性,因此使用:
window.globalVariable = 7;
有时this
等于window
,但通常不是。(我的意思并不是说this
只是随机设置的;有一组特定的规则适用。)
请注意,如果您发现自己需要像这样区分全局变量和局部变量,那么您很可能使用了太多全局变量。
您可以使用window['globalVariable']=7;
不过这不是一个好的解决方案。真的没有。
"this"变量通常指的是当前函数的作用域,除非它被绑定到其他对象或被调用/applied(.call/.apply)。我建议在谷歌上搜索函数作用域,因为这会让人很困惑。
如果你还有任何问题,我在Skype上。
相关文章:
- 得到"全局未定义“;全局变量定义清楚时出错
- Javascript 中未定义的全局变量
- jQuery/Javascript:在函数中定义全局变量
- 如何在 JavaScript 中定义全局变量
- 如何在另一个函数中访问 JavaScript 自定义全局变量
- 如何在 javascript 中定义全局变量 scop
- 如何在面向对象的javascript函数中更好地定义全局变量
- 用冲突的局部变量重新定义全局变量
- 如何在ember-cli环境中定义全局变量
- Javascript定义全局变量
- 声明和定义全局变量作为函数结果有时有效
- 未定义全局变量
- 使用for循环定义全局变量
- Google Maps在一个函数中定义全局变量,而在另一个函数中不定义全局变量
- 在JavaScript中定义全局变量时省略var关键字
- Javascript/HTML变量未定义(全局变量)
- 在函数中定义全局变量
- 如何在 javascript 函数中定义全局变量并在它外部访问它
- 在JavaScript函数中定义全局变量
- javascript vs jQuery自定义/全局变量范围