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

Why do we need to use one `var` to define many variables?

本文关键字:var 定义 变量 许多 一个 我们 为什么      更新时间:2023-09-26

我在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
          };

在JavaScript中没有块作用域,只有函数级作用域。因此,如果使用多个var语句,来自其他语言的开发人员可能感觉不到区别。例如,

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

如果您熟悉C、c++或JAVA,您可能会认为ifor循环之外不可用。由于第一行提到的原因,

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

引用jslint的文档,

在许多语言中,块引入了一个作用域。在块中引入的变量在块外部是不可见的。

在JavaScript中,块不引入作用域。只有函数作用域。在函数中任何地方引入的变量在函数中的任何地方都是可见的。JavaScript的代码块让经验丰富的程序员感到困惑,并导致错误,因为熟悉的语法做出了错误的承诺。

JSLint期望块中包含functionifswitchwhilefordotry语句,而不是其他语句。

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