2012-05-09 13 views
35

JavaScript içinde devam etmek için en iyi uygulama nedir? Dizeler için \'u kullanabileceğinizi biliyorum. Ancak aşağıdaki kodu nasıl bölebilirdiniz? Bunu iyi anlasalardıSatır devam karakterleri JavaScript

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

cevap

46

: unless you're using Ecmascript 2015, neyse \ ile satırlı dize bölmek önlemek, çünkü: okunabilirliği için

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

, her satırda + operatörü hizalamak için gayet:

  1. O
  2. bir WhiteSpa JavaScript
  3. değil standarttır Bir ayrıştırma hatayı üretebildiği karakterden sonra ce
+0

Burada aptal bir hata yaptım. Dizeler arasında bir boşluk yazmayı unutmak kolaydır. Boşluk varsa SQL deyimi çalışmayacaksa, dizeler arasındaki boşluğa dikkat edin (siz doğru var). – xralf

+1

Neden standart javascript olmadığını açıklar mısınız? Gibi, 'standart' çattı ya da başka türlü '' eksizem '', 'hiç bahsetmediniz mi? –

+3

Bu arada, "select *", özellikle dinamik bir SQL dizesinden sorgu oluştururken kötü bir uygulamadır. Bu, diğer şeylerin yanı sıra bir güvenlik kâbusu olabilir. SQL-enjeksiyonunun sorumluluğunu azalttığınızdan emin olmak için sütunları açıkça belirtmek ve bir veritabanı prosedür çağrısı veya tablo değerli fonksiyon çağrısı kullanmak çok daha iyi bir uygulamadır. SQL Server'da, dinamik SQL her zaman sp_executesql kullanmalıdır. – devinbost

22

Ben JavaScript hat devamı için tersbölüleri kullanarak şöyle mi: "+"

// validation 
    $(".adjustment, .info input, .includesAndTiming input, \ 
     .independentAdj, .generalAdj, .executiveAdj \ 
     #officeExpense, #longDistanceExpense, #digitalImages, #milesReimbursment, #driveTime, #statementTranscription").keypress(function (event) { 
+1

Ters eğik çizgileri kullanmayla ilgili sorun, gerçeğin ardından kodun çalışmasının durmasına neden olabilecek bir küçültme aracının olmasıdır. –

+3

Bunu destekleyecek örnekleriniz var mı? Http://jscompress.com/ ile çalışmak iyi çalışıyor gibi görünüyor. – user1477388

1

dizeleri Ulama için ve örneklerin çoğunda ilgileniyor dizeleri ile. Bir komutunuz varsa, "if" bileşimi gibi birden çok satıra dizmeniz gerekecek mi? Devam edilecek her satırın sonunda bir ters eğik çizgi gerekir. Bu, görünmez sonraki satır karakterinden kaçar, böylece komutun orta ifadede sınırlanmasına izin verilmez.

+0

Hayır, bir ifadeye veya ifadeye devam etmek için sürekliliğe ihtiyacınız yoktur. Sadece bir string veya regex buna ihtiyaç duyabilir. – doug65536

+0

[Prova] (https://jsfiddle.net/6q1ygsjs/) – doug65536

3

Benim kişisel tercihi orada ilk yanıta benzer, ancak gözlerim için onun okunabilirliği kolaylaşır:

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

Neredeyse 20 yıldır ben kullanıyorum SQL sözdizimi biçimine yakın bir benzerlik grev :

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

sağında SolDeğerler & sözdizimi denetimi, sol kenarı aşağı eşit kaymaya gözü izin üzerine devam (SQL JavaScript + veya AND) tutmak. Bu, soldaki devam ile biraz daha zor - bu şeylerin bir LOT yapmazsanız önemli değil, hangi noktada harcadığınız her kalori biçiminde küçük bir gelişme ile kurtarılmış olabilir bir kalori olduğunu.

Bu sorgu çok basit olduğundan, tümünü SQL biçimine ayırmak, boş alan ve bant genişliği israfıdır; bu nedenle önerilen JavaScript on yerine altı satırdadır. Bir satırı yukarı doğru kıvırmak her biri onu dört çizgi haline getirerek boşlukları kurtarır. Yine de, açık ya da basit bir düzenleme değil.

İlgili konular