JavaScript中的行继续符

xra*_*alf 45 javascript

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

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

fca*_*ran 59

如果我很好理解它:

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

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

  1. 它不是标准的JavaScript
  2. 该字符后面的空格可能会生成解析错误

  • 顺便说一下,"select*"是一种不好的做法,尤其是在从动态SQL字符串生成查询时.除其他外,这可能成为安全噩梦.显式指示列并使用数据库过程调用或表值函数调用以确保减少SQL注入的可靠性是一种更好的做法.在SQL Server中,动态SQL应始终使用sp_executesql. (3认同)
  • 你能解释一下为什么 ```\``` 不是标准的 javascript 吗?比如,它是否在 ecmascript 规范中从未被提及、不被认可或不是“标准”? (2认同)

use*_*388 24

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

    // validation
    $(".adjustment, .info input, .includesAndTiming input, \
        .independentAdj, .generalAdj, .executiveAdj \
        #officeExpense, #longDistanceExpense, #digitalImages, #milesReimbursment, #driveTime, #statementTranscription").keypress(function (event) {
Run Code Online (Sandbox Code Playgroud)

  • 你有任何支持这个的例子吗?通过http://jscompress.com/运行似乎工作正常. (5认同)

小智 5

我的个人偏好类似于你在那里的第一个回应,但对我来说,它的可读性更容易:

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

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

SELECT *
FROM t
WHERE 
   t.a1 = 0 AND
   t.a2 >=-1
ORDER BY a3 DESC
LIMIT 1
Run Code Online (Sandbox Code Playgroud)

保持最右边的连续(+在JavaScript或ANDSQL中)允许眼睛均匀地向下滑动左边缘,检查左值和语法.对于左侧的延续来说稍微有点困难 - 除非你做了很多这样的事情,否则不是很重要,此时你花的每卡路里都是卡路里,可能会因格式略有改善而得以保存.

由于此查询非常简单,因此将其全部分解为SQL格式会浪费空间和带宽,这就是建议的JavaScript在六行而不是十行上的原因.将曲线向上折叠一行,每条曲线将四条线折叠起来,从而节省空白.但是,编辑不太清楚或简单.