【问题标题】:javascript - indentation and position of curly brackets [duplicate]javascript - 大括号的缩进和位置[重复]
【发布时间】:2017-06-12 16:26:53
【问题描述】:

我在大学时被用于这种缩进和大括号放置的约定。

function code()
{
    if(code)
    {
     code
    }
}

但是 javascript 的在线教程告诉我改用这种样式

function code(){
    if(code){
    code
    }
}

第一个也是我喜欢的风格,因为它更清晰易懂。我的问题是为什么我必须遵循第二个例子?有什么优势吗??

【问题讨论】:

  • 没有任何优势,除了少了两行代码。对于第一种形式的某些人来说,它也可能更具可读性。
  • 您可以在第一个示例中隐藏不需要的空格。
  • 相同的代码。相信原因是这是 PHP 的首选样式,它往往具有多个层次,并且大多数 JavaScript 开发人员都来自 PHP 背景。我的意见。
  • 我个人讨厌第一种形式,但是在 Visual Studio 中编码时我别无选择...我认为您应该使用编辑器的缩进快捷方式并使用它。

标签: javascript indentation brackets convention


【解决方案1】:

官方的回答是你可以使用任何一个,但实际的回答是使用左花括号与它定义的代码块在同一行的版本更安全。

在 JavaScript 中,{} 是对象字面量的语法,并且 JavaScript 还具有自动分号插入功能。这种自动分号插入可能会导致使用左花括号编写的函数与它定义的函数的主体不同,执行方式与您预期的不同。有关详细信息,请参阅此:

Why do results vary based on curly brace placement?

【讨论】:

  • 这是正确的,但是您可以使用第一种语法并将其缩小,这样可以解决问题,第一种更具可读性并且在代码很长/很大时会有所帮助。
  • @27px 问题不在于缩小。此外,“更具可读性”是主观的。我会说第二个更具可读性,因为我在 JavaScript(位置很重要)中花费的时间比在 C# 中(在不重要的地方)中编码的时间要多得多。所以,既然通情达理的人会在风格上产生分歧,那么最好还是从实质上去。某些代码的执行方式存在实质性差异,将{ 放在新行上可能会导致错误,所以不要这样做。
  • 这只是在return语句的情况下,也可能在其他一些匿名函数中,但这些只是js中的例外,我也主要用JS编写代码,我一直使用第一种语法,除了在某些地方,例如一起返回和对象等。
  • 是的,这就是重点。如果一种语法会在极端情况下导致意外结果,而另一种语法永远不会导致同样的意外结果,那么您为什么要使用可能适得其反的语法呢?你不应该。这是一种反模式。
【解决方案2】:

主要是偏好。我个人更喜欢第二种方式,但唯一的区别是 javascript 的自动分号插入何时启动。在处理函数声明或 if 语句时没有区别。

【讨论】:

  • 不正确,在某些情况下,由于自动插入分号,执行会有所不同。
  • 啊,直到。我总是使用相同的行左括号,所以我从来没有遇到过这个问题。
  • 嗯,是的,函数声明和 if 语句是有区别的(由于自动插入分号,顺便说一句,它总是起作用)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-26
  • 2017-05-24
  • 1970-01-01
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
相关资源
最近更新 更多