使用相同的var关键字初始化多个javascript变量有什么好处?

时间:2011-03-28 06:36:03

标签: javascript

当我阅读清楚并且由显然非常擅长的人编写的javascript代码时,我经常会看到这种模式

var x = some.initialization.method(),
    y = something.els(),
    z;

这比写作更有优势

var x = some.initialization.method();
var y = something.els();
var z;

第二种格式更容易维护,因为每一行都是自己存在的。因此,您可以擦除一行或添加一行,而不必四处查看它是否是要初始化的第一个或最后一个变量。这也意味着源控制差异/合并将更好地工作。鉴于这些缺点,我猜测第一种格式有一些优势 - 但它是什么?当然它们执行相同,因为它与解析器相同。

5 个答案:

答案 0 :(得分:9)

发送到浏览器的javascript大小略有优势; Google的Closure compiler处于'仅限空格'模式会将单个var版本编译为:

var x=some.initialization.method(),y=something.els(),z;

和multi as:

var x=some.initialization.method();var y=something.els();var z;

我将您的else更改为els,以便进行编译。

这不是一个巨大的收获(特别是如果你也在压缩文件),“简单”的编译模式无论如何都会为你做这件事,所以我可能不会太在意它,除非你能找到更有说服力的理由。

您可能想要这样做的一个原因是,如果您不小心使用分号而不是逗号,那么您刚刚找到了全局。

答案 1 :(得分:4)

我无法忍受一个语句中的所有变量,因为变量声明可能与实际使用的位置相差很远。我知道它的所有参数,并且变量提升无论如何都将所有变量移动到函数的顶部。但是当我看到一个在函数顶部声明的变量并且它没有被用于另外20行时,它会让我有点疯狂,特别是对于循环索引变量

答案 2 :(得分:3)

在函数顶部使用单个var语句是一种有用的模式。它有以下好处:

  • 提供单个位置来查找函数所需的所有局部变量

  • 在变量定义之前使用变量时防止出现逻辑错误

  • 帮助您记住声明变量,从而最大限度地减少全局变量

  • 代码较少(通过电线键入和传输:)

  • JSLint喜欢这种模式

单个var模式如下所示:

function func() {
    var a = 1,
        b = 2,
        sum = a + b,
        myobject = {},
        i,
        j;

    // function body...

}

有关详细信息,请查看there


主要优点是你将在函数的最开始定义所有变量,所以你不会因为没有var声明的变量而导致很多全局变量,并且你的代码不会因为错误的var语句(在声明之前调用变量)

答案 3 :(得分:3)

唯一真正的优点是它为每个变量节省了几个字节,这在大型JS文件中可以加起来;请记住,JS文件通常是通过网络发送的。

我个人更喜欢每行一个var

答案 4 :(得分:0)

除线上尺寸外,它也可能有助于解释性能。来自Professional Java Script for Web Developers

  

单个语句可以比执行单个操作的多个语句更快地完成多个操作。因此,任务是寻找可以组合的语句,以减少整个脚本的执行时间。

它继续建议在一行中声明变量。