【问题标题】:May I omit curly braces in a function declaration?我可以在函数声明中省略花括号吗?
【发布时间】:2013-03-28 13:14:10
【问题描述】:

目前,我在 PHP 中声明函数,例如:

function theFunction($theVar) {
   ...
}

在 JavaScript 中像:

function theFunction(theVar) {
   ...
}

当函数只包含一行时,我可以省略花括号吗?喜欢:

function theFunction($theVar)
   doSomething();

还有:

function theFunction(theVar)
   doSomething();

【问题讨论】:

标签: php javascript function


【解决方案1】:

据我所知,这两种语言都不允许这样做。

它们都允许它用于单语句 if()s 和循环,但不允许用于函数(对于 PHP,也不允许用于类)。

但即使允许,我强烈建议不要这样做;大括号的存在是有原因的,以提高可读性并避免歧义。出于同样的原因,我建议始终将它们用于if()s 和循环,即使它们在那里并不是严格要求的。

像 Python 这样的语言可以不用大括号,因为它们有非常严格的缩进规则。如果没有这些规则,语言就需要大括号(或其他一些块标记);如果你不使用它们,你的代码很可能会出现逻辑错误。

【讨论】:

    【解决方案2】:

    没有。花括号是必需的。 (自己试试看)。

    【讨论】:

    • @CamilStaps 你是什么意思?该代码在 Chrome 中出现错误。
    • @CamilStaps 这是一个 Firefox 扩展。
    【解决方案3】:

    不,PHP 和 JS 都不支持这种声明。 trycatch 块也是如此,出于某种原因,它们总是需要花括号,即使条件和循环语句不需要。

    【讨论】:

    • @CamilStaps,您使用的是哪个浏览器?我在 Chrome 上,在我添加大括号之前,sn-p 什么都不做。
    • 啊,我在火狐上。这就解释了。
    • 您可以查看CoffeeScript - 它使用代码标识来分隔块并编译为 JS。
    【解决方案4】:

    不,无论主要语句如何包含在函数声明中,函数声明都需要一个块。

    function f()
        console.log(x); // error: unexpected identifier
    

    【讨论】:

      猜你喜欢
      • 2011-12-22
      • 2013-01-31
      • 1970-01-01
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      相关资源
      最近更新 更多