【发布时间】:2012-06-22 14:36:56
【问题描述】:
我目前正在使用基于 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 的 Phabricator、Facebook JS SDK 和 jQuery),似乎所有(除了 jQuery)大多数时候都在第一次使用时声明了变量。 jQuery 倾向于将它们声明在函数的顶部,但绝不是一致的。
【问题讨论】:
-
我认为对于带有条件语句的大型函数,在使用之前声明变量实际上会更好,这样您就不会最终声明而不使用它们(从而浪费资源)。
-
对克罗克福德所说的一切持保留态度。采取最适合您和您一起工作的其他开发人员的方式。
-
FWIW,我在使用它们的地方声明它们。遵守您正在开发的项目的约定。如果是新项目或没有约定,请创建适合大多数编程风格的项目并坚持下去。
-
投票没有建设性;在“流行” JS 程序员中什么是“流行”并不重要,但是您可能想要定义“流行”。
-
Bleh.. 我正要发送一个漂亮、有建设性和有帮助的答案。我花了太多时间来美化格式;(
标签: javascript coding-style var