也许是一个相当简单的问题。
在JavaScript中应该在哪里使用 var
关键字?在我看来,使用它或不使用它似乎有着相同的效果(但当然我还在学习这门语言)。
例如,对我来说下面这两个代码片段看起来一样:
(function(){
var a = "mundo"
alert("Hola, " + a )
})()
并且(function(){
a = "mundo"
alert("Hola, " + a )
})()
当然,必须有一个更复杂的示例来展示差异。
也许是一个相当简单的问题。
在JavaScript中应该在哪里使用 var
关键字?在我看来,使用它或不使用它似乎有着相同的效果(但当然我还在学习这门语言)。
例如,对我来说下面这两个代码片段看起来一样:
(function(){
var a = "mundo"
alert("Hola, " + a )
})()
并且(function(){
a = "mundo"
alert("Hola, " + a )
})()
当然,必须有一个更复杂的示例来展示差异。
使用var
时,你在当前作用域中实例化一个变量。这也会防止在当前作用域内访问具有相同名称的更高作用域中的变量。
在第一个示例中,'a'在函数作用域内被实例化和设置。在第二个示例中,由于缺少var
,'a'在函数作用域之外被设置。
使用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
使用 var :
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'
我认为你需要重新了解一下JavaScript对象作用域。
使用“var”关键字将在最顶层(全局)作用域中放置您的变量。这意味着,如果一个函数使用相同的变量,“var”变量声明将覆盖函数中的(非var)变量... JavaScript作用域
var
声明的变量总是这样吗? - OscarRyz