全局变量的概念开始凝固。函数之外的任何变量都是全局的,对吗? 如果变量包含在$(document).ready( function() { *code* } );
中,它们是否被视为全局?
我找到了一个解决方法,将一个经常使用的数组放入使用所述数组的函数中,但现在我基本上使用我的HTML内容作为我的全局,如果这是有意义的(例如,在div中使用文本并传递它成为一个功能)。这是人们通常不断改变/经常引用变量的方式吗?
如果它们不是全局变量,我是否应该将变量包含在函数内部以开发良好实践?
答案 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"
。