我什么时候使用var?
可能重复:
JavaScript变量范围
我的理解是,在一个函数中,如果我使用var,那么我有一个局部变量。 如果我不delcare var我现在有一个全局变量。
但是函数的尾巴呢,var有什么作用?
首先,在函数之外使用代码通常是不好的做法。 如果没有别的,请将您的代码包含在匿名函数中:
(function(){
// code
})();
至于var有什么作用,它会“声明”一个变量:
var foo;
alert(foo); // undefined;
VS:
alert(foo); // error: foo is not defined
原因是上述代码在功能上与以下内容相同:
alert(window.foo);
如果没有用var
声明变量,你会得到一个查找错误,就像试图访问任何不存在的对象的属性一样。
请注意var
一个奇怪之处在于所有的声明都被拉到脚本的顶部,所以这也会起作用:
alert(foo); // undefined
var foo;
你也可以在window
对象中访问你的变量(尽管你也可以通过设置没有var的变量来获得这个变量,例如foo=42
):
var foo;
for(var key in window){
// one of these keys will be 'foo'
}
总是使用var
是一个好习惯。 严格地说,当你已经在全球范围内时,你不需要但为了代码可维护性,你应该这么做。
假设你有:
foo = 'bar';
但是稍后您决定要将此代码移入一个函数中:
function doSomething() {
foo = 'bar'; // oops forgot to add var
}
如果你忘记添加一个var
语句,你刚刚创建了一个隐式的全局变量。 现在,如果您在名为foo
的全局范围中创建一个新对象,它们将导致彼此冲突。
function doSomething() {
foo = 'bar'; // Implicit global
}
foo = 'baz';
doSomething();
console.log(foo); // Returns 'bar', not 'baz'
这种类型的错误是,当你忘记使用非常阴险的var
对像i
在for
循环。 学习使用JSLint可以帮助避免这些和其他有问题的逻辑或语法错误。
您的问题在https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var中得到解答
在函数外部使用var是可选的; 为未声明的变量赋值会隐式声明它为全局变量。 但是,建议始终使用var,并且在以下情况下在函数中必须使用var:
在这些情况下未能声明变量很可能会导致意想不到的结果。
链接地址: http://www.djcxy.com/p/40819.html上一篇: When do I use var?
下一篇: How to get variables from the outside, inside a function in jQuery?