4

我目前正在使用基于 Douglas Crockford 的JavaScript Programming Language 代码约定的 JavaScript 编码风格,这意味着我在该函数的开头声明了函数中使用的所有变量:

function drawTiles(tiles) {
    var x, y, tile;
    for (x = 0; x < width; x++)
        for (y = 0; y < weight; y++) {
            tile = tiles[y][x];
            if (tile)
                drawTile(tile, x, y);
        }
}

这是有道理的,因为 JavaScript 中的变量被提升到函数的顶部,并且函数的作用域无论如何。

但是,我的印象是在第一次使用时声明它们更受欢迎,如下所示:

function drawTiles(tiles) {
    for (var x = 0; x < width; x++)
        for (var y = 0; y < height; y++) {
            var tile = tiles[y][x];
            if (tile)
                drawTile(tile, x, y);
        }
}

这实际上更容易与 IMO 一起工作 - 每当声明一个新变量时,您都不必跳转到当前函数的顶部。但感觉并不“正确”。

我的问题是:哪种风格在专业(和流行)JavaScript 程序员中更受欢迎?(我通常会尝试选择社区中最常用的代码风格)

我查看了一些开源项目(Google 的Closure、Facebook 的PhabricatorFacebook JS SDKjQuery),似乎所有(除了 jQuery)在大多数时间第一次使用时都声明了变量。jQuery 倾向于将它们声明在函数的顶部,但绝不是一致的。

4

1 回答 1

1

我认为第二种风格很受欢迎,因为这是在大多数其他语言中你会这样做的方式,即声明使用它的变量。

未来版本的 ECMAScript 将通过let关键字引入块作用域,这可能会改变人们编写 JS 的方式(更倾向于第二种风格)。

但除此之外,如果你保持你的函数很小,它真的变成了一个品味问题。

于 2012-06-20T12:53:39.133 回答