【问题标题】:Dangerous implications of Allman style in JavaScriptJavaScript 中 Allman 风格的危险含义
【发布时间】:2012-06-30 03:09:41
【问题描述】:

我不记得在哪里,但最近我传递了一条评论,其中用户告诉 1TBS 在 JavaScript 中比 Allman 更受欢迎,并说 Allman 在 JavaScript 中具有危险的含义。

这是一个有效的陈述吗?如果有,为什么?

【问题讨论】:

标签: javascript code-formatting


【解决方案1】:

return 后面不能有LineTerminator 所以:

return
{


};

被视为return;(返回undefined)而不是return {};(返回一个对象)

有关更多信息,请参阅Automatic Semicolon Insertion (ASI) 的规则。

【讨论】:

  • 也许说它与 ASI 有关是一个加分项?
  • 我已经变得非常喜欢 javascript,但这仍然很奇怪
  • @FlorianMargaine 给我一点时间
  • A good quick rant on using semicolons. 转述:Semicolons are required in JavaScript; they’re just not required in YOUR JavaScript.
【解决方案2】:

这是一个有效的陈述。

因为 JavaScript 的引擎有所谓的 ASI(自动分号插入),如果需要,它会在行返回时插入分号。 “如有必要”含糊不清;有时它有效,有时无效。见the rules

所以,正如其他答案中所说:

return
{
};

// Is read by the JavaScript engine, after ASI, as:
return; // returns undefined
{ // so this is not even executed
};

因此不建议将其用于return 语句。

但是,如果您的指南推荐使用 Allman 样式进行函数声明,那就完全没问题了。我知道有些是这样的。

【讨论】:

    【解决方案3】:

    我认为这取决于声明。例如,如果左大括号在新行上,则返回语句可能会被破坏。 More info here.

    【讨论】:

      【解决方案4】:
      return {
          a: "A",
          b: "B"
      };
      
      // vs.
      
      return // Semicolon automatically inserted here! Uh oh!
      {
          a: "A",
          b: "B"
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-09
        • 2011-06-20
        • 2018-09-04
        • 2015-12-22
        • 1970-01-01
        • 2012-02-10
        相关资源
        最近更新 更多