6

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

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

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

4

2 回答 2

4

不,它们被认为是函数内部的局部范围。

检查一下 JavaScript 范围:https ://stackoverflow.com/a/500459/1538708

通过函数确定变量的范围是一种很好的做法,尤其是当您想通过最小化程序运行代码时。

于 2012-12-20T16:28:44.160 回答
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"

于 2012-12-20T16:41:56.480 回答