【问题标题】:Should var statements be the first statements in JavaScript functions? [closed]var 语句应该是 JavaScript 函数中的第一个语句吗? [关闭]
【发布时间】: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 的 PhabricatorFacebook JS SDKjQuery),似乎所有(除了 jQuery)大多数时候都在第一次使用时声明了变量。 jQuery 倾向于将它们声明在函数的顶部,但绝不是一致的。

【问题讨论】:

  • 我认为对于带有条件语句的大型函数,在使用之前声明变量实际上会更好,这样您就不会最终声明而不使用它们(从而浪费资源)。
  • 对克罗克福德所说的一切持保留态度。采取最适合您和您一起工作的其他开发人员的方式。
  • FWIW,我在使用它们的地方声明它们。遵守您正在开发的项目的约定。如果是新项目或没有约定,请创建适合大多数编程风格的项目并坚持下去。
  • 投票没有建设性;在“流行” JS 程序员中什么是“流行”并不重要,但是您可能想要定义“流行”。
  • Bleh.. 我正要发送一个漂亮、有建设性和有帮助的答案。我花了太多时间来美化格式;(

标签: javascript coding-style var


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    相关资源
    最近更新 更多