何时在Javascript中使用var

Osc*_*Ryz 54 javascript var

也许很简单的问题.

我应该var在JavaScript中使用关键字.在我看来使用它或不具有相同的效果(但我当然还在学习语言)

比如这些对我来说似乎都是一样的:

(function(){
  var a = "mundo"
  alert("Hola, " + a )
})()
Run Code Online (Sandbox Code Playgroud)

(function(){
  a = "mundo"
  alert("Hola, " + a )
})()
Run Code Online (Sandbox Code Playgroud)

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

Bod*_*man 84

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

在第一个示例中,"a"正在实例化并在函数范围内设置.在您的第二个示例中,由于缺少"a",因此在函数范围之外设置了"a"var

var:

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

alert(a); //A
Run Code Online (Sandbox Code Playgroud)

没有var:

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

alert(a) //B
Run Code Online (Sandbox Code Playgroud)


Sam*_*fel 15

使用var:

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

myfunction();  //alerts 'hola, mundo'
alert(a);  //alerts 'world';
Run Code Online (Sandbox Code Playgroud)

不使用var:

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

myfunction();  //alerts 'hola, mundo'
alert(a);  //alerts 'mundo'
Run Code Online (Sandbox Code Playgroud)


It *_*unt 6

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

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