回答
声明全局变量只能用作最后选项。
全局变量一般不好,特别是在JavaScript中。根本没有办法阻止另一块JavaScript的破坏你的全球。这种破坏会悄然发生并导致运行时错误。
以下列为例。
// Your code
myParam = { prop: 42 };
function operateOnMyParam() {
console.log(myParam.prop);
}
在这里,我宣布2个全局变量
- myParam
- operateOnMyParam
而孤立测试你的JavaScript这可能会很好地工作。但是,如果测试用户与出现这种情况有以下定义
// My code
function myParam() {
console.log("...");
}
这也定义了一个全局命名值其myParam与你擦出myParam我的JavaScript库结合您的JavaScript库后会发生什么。哪一个取决于脚本的导入顺序。但无论哪种方式,我们中的一个人都陷入困境,因为我们的全球物体之一已经死亡
你能解释一下,或者链接到别人的解释,为什么这是? –
@Nathan - http://c2.com/cgi/wiki?GlobalVariablesConsideredHarmful –
@Nathan - 也许对你更好:http://c2.com/cgi/wiki?GlobalVariablesAreBad –
有很多很多的原因..但一个简单的是..函数的参数只存在于函数中,而它正在运行。全局变量存在所有的时间,这意味着:
- 它占用的内存中,直到您手动“摧毁”了
- 每个全局变量的名称必须是唯一的
- 如果,你的函数内..你调用另一个函数..最终调用第一个函数,突然间你可能会得到意想不到的结果。
总之:因为函数参数只活了一个非常短的时间内和之外的功能不存在,它更容易理解这是怎么回事,并大大降低了错误的风险。
在处理无框架JavaScript时,我会将我的简单变量和函数存储在对象字面上,以免混乱全局命名空间。
var myObject = {
variableA : "Foo",
variableB : "Bar",
functionA : function(){
//do something
//access local variables
this.variableA
}
}
//call functions and variables
myObject.variableA;
myObject.functionA();
- 1. 将全局变量传递给函数是否有价值?
- 2. 为什么不将全局变量值传递给函数?
- 3. 将局部变量传递给全局函数
- 4. 将全局javascript变量传递给php
- 5. 将全局变量传递给插件
- 6. 将全局JS变量传递给DOM
- 7. 将一个全局变量传递给一个函数 - C++
- 8. PHP - 如何将全局变量传递给函数
- 9. 如何将全局变量传递给util函数
- 10. 将变量值传递给eval函数
- 11. 将全局指针传递给函数
- 12. 将全局变量传递给函数 - 全局变量在函数运行后不更新
- 13. 从函数传递局部变量变为全局变量
- 14. 将变量传递给一个函数并更改其全局值
- 15. 如何将innerHTML元素的值传递给全局变量?
- 16. Seg Fault - 将变量传递给方法更改全局值
- 17. 如何将JQuery变量传递给全局变量
- 18. 传递结构与将变量传递给函数C
- 19. 将全局变量var的名称传递给函数以改变var?
- 20. 将变量值传递给脚本函数中的变量(Javascript)
- 21. 将jQuery变量传递给Javascript函数
- 22. Python:tkinter:将变量传递给函数
- 23. 将PHP变量传递给JavaScript函数
- 24. 将变量传递给.html()函数
- 25. 将变量传递给jQuery .css()函数
- 26. printf函数将变量传递给javascript
- 27. 将变量传递给函数失败
- 28. 将变量传递给ajax函数
- 29. 将Ajax变量传递给Codeigniter函数
- 30. 将PHP变量传递给JavaScript函数
关于在JavaScript中使用全局变量,StackOverflow已经存在很多问题。如果您使用此页面右上角的搜索字段,则会发现很多信息。 – user113716
@patrickdw:对不起。就像我所说的,我是JavaScript新手,有时无法自行找到问题。我只是在StackOverflow上做了另一个搜索,看看我能找到什么 - 不是很适用(可能是由于我的JavaScript新手状态)。我很乐意阅读上述材料!什么是寻找它的好方法? –
此搜索[“什么时候应该在JavaScript中使用全局变量”](http://stackoverflow.com/search?q=q = when + should + I + use + global + variables + in + javascript)应该给你足够的素材。你会发现一致的答案是尽可能地避免全局性。任何未在函数中声明的变量,或未使用'var'声明的变量都将是全局变量。 – user113716