JQuery:变量是在$(document).ready()中声明的吗?全局?什么时候可以避免全局变量?

时间:2012-12-20 16:20:26

标签: jquery

全局变量的概念开始凝固。函数之外的任何变量都是全局的,对吗? 如果变量包含在$(document).ready( function() { *code* } );中,它们是否被视为全局?

我找到了一个解决方法,将一个经常使用的数组放入使用所述数组的函数中,但现在我基本上使用我的HTML内容作为我的全局,如果这是有意义的(例如,在div中使用文本并传递它成为一个功能)。这是人们通常不断改变/经常引用变量的方式吗?

如果它们不是全局变量,我是否应该将变量包含在函数内部以开发良好实践?

2 个答案:

答案 0 :(得分:4)

不,它们被认为是本地范围内的功能。

查看JavaScript范围:https://stackoverflow.com/a/500459/1538708

通过函数确定变量范围是很好的做法,特别是如果您想通过minimizer运行代码。

答案 1 :(得分:3)

$(document).ready中包含的变量不是全局变量。当你在函数中声明一个变量时,它的作用域就是函数,那么一旦函数结束,变量将不再存在。

var myGlobal = "foo";

$(document).ready(function(){
    var myVar = 42; // myVar will only exist in this scope
    $.myVar = 42; // $.myVar will be accessible anywhere since you have access to '$' object
    // care, this variable will be accessible anywhere
    // if you declare a variable with the same name but omit to add the "var" first, it will work without any error (unless you have "use strict")
    myGlobal = "bar";
});

尽可能避免全局变量。不要陷入创建一个包含你所需要的“上帝对象”,你的代码将更难以阅读和理解。

您也可以查看"use strict"