什么时候使用var? [重复]

|                                                                                                                   这个问题已经在这里有了答案:                                                      
已邀请:
        首先,在函数之外使用代码通常是一种不好的做法。如果没有其他问题,请将您的代码包装在匿名函数中:
(function(){
    // code
})();
至于var有什么作用,它“声明”了一个变量:
var foo;
alert(foo); // undefined;
vs:
alert(foo); // error: foo is not defined
原因是上述代码在功能上与以下代码相同:
alert(window.foo);
如果不使用
var
声明变量,则会出现查找错误,与尝试访问不存在的任何对象的属性相同。 请注意,“ 4”的怪异之一是所有声明都被拉到了脚本的顶部,因此这也可以正常工作:
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
语句,那么您刚刚创建了一个隐式全局。现在,如果您在全局范围内创建一个名为“ 14”的新对象,它们将导致彼此冲突。
function doSomething() {
    foo = \'bar\'; // Implicit global
}

foo = \'baz\';
doSomething();
console.log(foo); // Returns \'bar\', not \'baz\'
当您忘记在
for
循环中的ѭ17之类的东西上使用
var
时,这种错误特别隐蔽。学习使用JSLint可以帮助避免这些以及其他有问题的逻辑或语法错误。     
        您的问题在https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/var中得到了回答   在函数外使用var是   可选的;给一个值赋值   隐式未声明的变量   将其声明为全局变量。   但是,建议始终   使用var,并且在   在以下情况下起作用:         如果包含函数的作用域(包括全局作用域)中的变量具有相同的名称。   如果递归或多个函数使用具有相同名称的变量,并且>将这些变量设置为局部变量。         未能在中声明变量   这些情况很可能导致   意外的结果。     
        我相信在函数外部使用var与不使用var的工作原理相同:您将获得全局变量。例外情况是,如果您处于类或其他命名空间结构中,则仍将在该语言环境中定义变量     
        我相信无论何时初始化变量,您都想创建一个变量。按照我的编码,每当我需要初始化变量时,我都用var启动它。如果您声明的变量没有单词var,则它始终是全局的。如果在函数内部使用var声明变量,则该变量在该函数中是局部的。如果使用var外部函数创建变量,则它将是全局变量。     
        如果您声明一个全局变量并设置一个值,它将没有任何实际价值,但是如上所述,这是最佳实践。但是,如果要声明不带值的变量,则需要\“ var \”。     

要回复问题请先登录注册