我目前正在使用基于 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 的Phabricator、Facebook JS SDK和jQuery),似乎所有(除了 jQuery)在大多数时间第一次使用时都声明了变量。jQuery 倾向于将它们声明在函数的顶部,但绝不是一致的。