在变量声明中使用 var 有啥好处? [复制]

Posted

技术标签:

【中文标题】在变量声明中使用 var 有啥好处? [复制]【英文标题】:What's advantage to use var in the variable declaration? [duplicate]在变量声明中使用 var 有什么好处? [复制] 【发布时间】:2012-02-10 17:57:45 【问题描述】:

可能重复:Difference between using var and not using var in javascript

对于代码,我发现不需要使用 var 来声明变量。以下都有效

// with var
var object = new Object();

// without var
object = new Object();

这两者有什么区别?

【问题讨论】:

看这里***.com/questions/1470488/… 这是丹尼尔指出的完全相同的副本。 【参考方案1】:

关键的区别是如果你不使用var 关键字,你的变量将是全局的,即使你在一些嵌套函数中定义了它。

var 定义了该变量的范围。是否使用全局变量取决于您是否要跨多个作用域使用您的对象,但强烈建议不要使用全局变量以支持减少全局作用域污染的命名空间。

【讨论】:

【参考方案2】:

如果您不使用var 关键字,您将声明一个全局变量。如果你使用它,你就是在当前范围内声明变量。

例如:

function foo() 
    o = new Object();


foo();
alert(o); // you can access the o variable here

这很糟糕,因为您基本上已经污染了全局范围。

相比之下:

function foo() 
    // the o variable is accessible only inside the current scope which
    // is the foo function
    var o = new Object();


foo();
alert(o); // error => o is not accessible here

结论:总是使用var关键字指定变量的范围。

【讨论】:

【参考方案3】:

使用var 使变量成为函数的局部变量

【讨论】:

【参考方案4】:

如果你在任何函数之外的宽泛的 javascript 中使用 var 并不重要,因为

var a

是一样的
window.a

但在函数内部

var a是函数的私有变量,而a指向window.a(全局)

【讨论】:

以上是关于在变量声明中使用 var 有啥好处? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

IF 一个函数被赋值给一个使用 var 声明的变量和 let 有啥区别?

JavaScript中如何使用变量?有啥特殊的语法规则?

使用 'var' 声明变量是可选的吗? [复制]

通过尽可能多地定义常量而不是变量,Swift 有啥好处吗?

C ++中变量的声明和定义有啥区别? [复制]

声明不带 var 关键字的变量