var语句应该是JavaScript函数中的第一个语句吗?

时间:2012-06-20 12:46:10

标签: javascript coding-style var

我目前正在使用基于Douglas Crockford的Code Conventions for the 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倾向于将它们声明为函数的顶部,但绝不一致。

1 个答案:

答案 0 :(得分:1)

我认为第二种风格很受欢迎,因为这是你在大多数其他语言中的表现,即声明变量在哪里使用。

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

但除此之外,如果你保持你的功能很小,那真的变成了品味。