在javascript中为什么我们使用var来声明变量?

In javascript why we use var for declaring variable?

本问题已经有最佳答案,请猛点这里访问。

我一直在使用javascript& jQuery一个月。 但我仍然没有得到使用var变量和不声明var之间的区别。

1
2
var data = 10;
data = 10;

上面两个陈述有什么区别? 为什么? 请详细向我解释。


区别在于使用"var"关键字在当前范围内声明变量。在顶级范围(窗口),您当然不会注意到太大的区别。我认为一个例子使得更清楚:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 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


声明不带var关键字的变量将使其成为全局变量,这意味着它将可用于声明它的模块中的所有函数和对象。
不用说,这会造成很多麻烦,应该避免。

使用var关键字声明变量会将变量的范围限制为声明的范围。


我们使用它是因为它是一种提高可读性的语言结构,它源于"较旧的"动态类型语言(例如Beginners All Symbolic Instruction Code,又名basic。)

var类似于语法角度的基本'dim'语句。

使用它是一种良好的做法,因为如果在范围内省略它,它将传播到全局范围(尽管如果在全局范围内使用则绝对没有效果。)