59

JavaScript中续行的最佳实践是什么?我知道你可以使用\字符串。但是您将如何拆分以下代码?

var statement = con.createStatement("select * from t where
(t.a1 = 0 and t.a2 >=-1)
order by a3 desc limit 1");
4

4 回答 4

74

如果我正确理解了您的问题:

var statement = con.createStatement('select * from t where '
                                  + '(t.a1 = 0 and t.a2 >=-1) '
                                  + 'order by a3 desc limit 1');

为了可读性,可以在每一行上对齐+运算符:无论如何,除非您使用 Ecmascript 2015,否则请避免使用 拆分多行字符串\,因为:

  1. 它不是标准的 JavaScript
  2. 该字符后的空格可能会产生解析错误
于 2012-05-09T11:14:07.807 回答
26

我喜欢使用反斜杠来延续 JavaScript 行,如下所示:

    // validation
    $(".adjustment, .info input, .includesAndTiming input, \
        .independentAdj, .generalAdj, .executiveAdj \
        #officeExpense, #longDistanceExpense, #digitalImages, #milesReimbursment, #driveTime, #statementTranscription").keypress(function (event) {
于 2013-07-01T20:30:36.740 回答
9

我个人的偏好与您在那里的第一反应相似,但在我看来,它的可读性更容易:

var statement = con.createStatement
   (
   'select * from t where ' +
   '(t.a1 = 0 and t.a2 >=-1) ' +
   'order by a3 desc limit 1'
   );

它与我使用了近 20 年的 SQL 语法格式非常相似:

SELECT *
FROM t
WHERE 
   t.a1 = 0 AND
   t.a2 >=-1
ORDER BY a3 DESC
LIMIT 1

保持最右边的延续(+在 JavaScript 或SQL 中)允许眼睛均匀地向下滑动左边缘,检查左值和语法。AND对于左侧的延续来说,这稍微有点困难——这并不重要,除非你做了很多这样的事情,在这一点上,你消耗的每一卡路里都是一个卡路里,可能会因为格式的轻微改进而节省下来。

由于这个查询非常简单,将其全部分解为 SQL 格式会浪费空间和带宽,这就是为什么建议的 JavaScript 是六行而不是十行的原因。将卷曲向上折叠一行,使其变为四行,从而节省空格。但是,不是那么清晰或编辑起来那么简单。

于 2014-05-26T00:35:27.943 回答
1

“+”用于连接字符串,大多数示例都是处理字符串。如果您有一个需要跨多行字符串的命令,例如复合“if”语句,该怎么办?您需要在要继续的每一行末尾添加一个反斜杠。这会转义不可见的下一行字符,以便它不会在 mid 语句中分隔命令。

于 2014-03-27T19:03:23.220 回答