When do I use var?
Possible Duplicate:
JavaScript Variable Scope
我的理解是,在一个函数中,如果我使用var,那么我有一个局部变量。如果我不delcare var,我现在有一个全局变量。
但是函数的oustide呢,var有什么影响呢?
首先,在函数之外使用代码通常是不好的做法。如果没有其他内容,请用匿名函数包装代码:
1 2 3 | (function(){ // code })(); |
对于var的影响,它"声明"了一个变量:
1 2 | var foo; alert(foo); // undefined; |
VS:
1 | alert(foo); // error: foo is not defined |
原因是上述代码在功能上与以下代码相同:
1 | alert(window.foo); |
在不使用
注意,
1 2 | alert(foo); // undefined var foo; |
您还可以访问
1 2 3 4 | var foo; for(var key in window){ // one of these keys will be 'foo' } |
始终使用
说你有:
1 | foo = 'bar'; |
但稍后您决定要将此代码移动到函数中:
1 2 3 | function doSomething() { foo = 'bar'; // oops forgot to add var } |
如果你忘记添加一个
1 2 3 4 5 6 7 | function doSomething() { foo = 'bar'; // Implicit global } foo = 'baz'; doSomething(); console.log(foo); // Returns 'bar', not 'baz' |
当您忘记在
您的问题在https://developer.mozilla.org/en-us/docs/web/javascript/reference/statements/var中得到了解答。
Using var outside a function is
optional; assigning a value to an
undeclared variable implicitly
declares it as a global variable.
However, it is recommended to always
use var, and it is necessary within
functions in the following situations:
- If a variable in a scope containing the function (including the global scope) has the same name.
- If recursive or multiple functions use variables with the same name and> intend those variables to be local.
Failure to declare the variable in
these cases will very likely lead to
unexpected results.
如果您声明一个全局变量并设置一个值,它将没有任何实际值,但如前所述,这是最佳实践。但是,如果要声明一个没有值的变量,则需要"var"。
我相信您希望在初始化变量时创建一个var。正如我所编写的代码,当我需要初始化一个变量时,我从var开始。如果您声明一个没有var这个词的变量,它总是全局的。如果在函数内部声明一个带有var的变量,它就是该函数的局部变量。如果在函数外部创建一个变量,它将是一个全局变量。
我相信在函数外部使用var和不使用var是一样的:您得到一个全局变量。如果您在一个类或其他名称空间结构中,它仍将在该区域设置中定义一个变量,那么这将是一个例外。