我一直在使用javascript& jQuery一个月。但我仍然没有得到使用var
变量和不声明var
之间的区别。
var data = 10;
data = 10;
上述两个陈述有什么区别?为什么?请详细向我解释。
答案 0 :(得分:2)
声明一个没有var
关键字的变量将使其成为全局变量,这意味着它将可用于声明它的模块中的所有函数和对象。
不用说,这会造成很多麻烦,应该避免。
使用var
关键字声明变量会将变量的范围限制为声明的范围。
答案 1 :(得分:2)
区别在于" var"关键字,您在当前范围内声明变量。在顶级范围(窗口),你当然没有注意到很大的不同。我认为一个例子可以让人更清楚:
// declares "data" on window scope
var data = 10;
function foo() {
// overwrites the "global" data to 20.
data = 20;
// declares a scoped variable "scopedData" inside of this function and sets it to 25
var scopedData = 25;
alert(data);
alert(scopedData);
}
// scoped data is undefined here because it was scoped to the function.
alert(scopedData);
还要注意所有" var"声明需要在其作用域内是唯一的,并且执行被移动到作用域的开头。 有关详细信息,请参阅此文章:http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html
答案 2 :(得分:0)
我们使用它是因为它是一种提高可读性的语言结构,它源于“较旧的”动态类型语言(例如初学者所有符号指令代码,又名基本。)
var从语法角度来看类似于基本的'dim'语句。
使用它是一种良好的做法,因为如果在范围内省略它,它将传播到全局范围(尽管如果在全局范围内使用则绝对没有效果。)