为什么我们需要使用一个`var`来定义许多变量?

时间:2014-08-04 07:30:09

标签: javascript

我在Javascript中定义了一些变量:

var aaa = "aaa";
var bbb = "bbb";
var ccc = "ccc";

但是我的朋友说将它们定义为:

应该更好
var aaa = "aaa",
    bbb = "bbb",
    ccc = "ccc";

因为JsLint会报告我的代码错误。

我不知道为什么我们应该把它作为第二个,因为我发现我的版本更好地查看值是否非常大,如:

var aaa = {
             some1 : 111,
             some2 : 222
          };
var bbb = {
             some1 : 111,
             some2 : 222
          };

1 个答案:

答案 0 :(得分:5)

在JavaScript中没有块范围,只有功能级别范围。因此,如果您使用多个var语句,那么来自其他语言的开发人员可能感觉不到差异。例如,

var numbers = [];

for (var i = 0; i < 10; i += 1) {
    numbers.push(i);
}

如果您熟悉C,C ++或JAVA,您可能会认为i循环之外的for不可用。但这是因为第一行中提到的原因。

因此,为避免混淆,JSLint鼓励您每个函数只使用一个var语句,这也应该是该函数的第一行。

引自jslint's documentation

  

在许多语言中,块引入了范围。块中引入的变量在块外部不可见。

     

在JavaScript中,块不会引入范围。只有功能范围。函数中任何位置引入的变量在函数中的任何位置都可见。 JavaScript的块会让有经验的程序员感到困惑并导致错误,因为熟悉的语法会产生错误的承诺。

     

JSLint期望包含functionifswitchwhilefordotry语句的数据块而在其他任何地方。

     

在具有块范围的语言中,通常建议在首次使用的站点声明变量。但是因为JavaScript没有块范围,所以在函数顶部声明所有函数的变量是明智的。建议每个函数使用一个var语句。这可以使用vars选项拒绝。