63

也许很简单的问题。

我应该在哪里使用varJavaScript 中的关键字。在我看来使用它或没有相同的效果(但当然我还在学习语言)

例如,这两个在我看来都是一样的:

(function(){
  var a = "mundo"
  alert("Hola, " + a )
})()

(function(){
  a = "mundo"
  alert("Hola, " + a )
})()

但是,当然必须有一个更复杂的例子来显示差异。

4

4 回答 4

96

当您使用 时var,您将在当前范围内实例化一个变量。这也将阻止在当前范围内访问更高范围内命名相同的变量。

在您的第一个示例中,“a”被实例化并在函数范围内设置。在您的第二个示例中,由于缺少var

var

var a = "A"
(function(){
  var a = "B"
  alert(a) //B
})()

alert(a); //A

没有var

var a = "A";
(function(){
  a = "B"
  alert(a) //B
})()

alert(a) //B
于 2011-03-22T22:46:21.660 回答
16

使用变量:

var a = 'world';   
myfunction = function(){
  var a = "mundo"
  alert("Hola, " + a )
}

myfunction();  //alerts 'hola, mundo'
alert(a);  //alerts 'world';

不使用 var:

var a = 'world';   
myfunction = function(){
  a = "mundo"
  alert("Hola, " + a )
}

myfunction();  //alerts 'hola, mundo'
alert(a);  //alerts 'mundo'
于 2011-03-22T22:50:08.977 回答
6

我认为您需要刷新自己的 Javascript 对象范围。

使用“var”关键字会将您的变量放在最顶层(全局)范围内。这意味着如果一个函数使用相同的变量,您声明的“var”变量将覆盖函数中的(非 var)变量... JavaScript 作用域

于 2011-03-22T22:51:39.553 回答
1

如果 var 没有在函数内部使用,JS 会在上面查找它,所以如果你在不同的函数中使用 save var,它们可能会发生冲突。如果要定义新变量,总是值得使用 var。

于 2011-03-22T22:50:08.210 回答