我的JavaScript声明是否正确?

时间:2011-09-30 19:49:42

标签: javascript

我需要知道我的JavaScript句子是否正确?我对单引号和加号非常困惑。

document.f.SQL.value ='\('+ 
    document.f.SQL.value + a[i] +
    ' >= \''+ document.f[a[i]+"_A"].value  +
    '\' AND '+ a[i] +' <= \''+
    document.f[a[i]+"_B"].value +
    '\) or DATEADD'+'\('+
    'dd, 0, DATEDIFF'+'\('+
    'dd, 0,'+ a[i] +'\))  = \''+
    document.f[a[i]].value +
    '\'';

2 个答案:

答案 0 :(得分:4)

我将您的代码粘贴到Closure Compiler并使用了没有错误的代码,因此语法正确。生成的代码是:

document.f.SQL.value = "(" + document.f.SQL.value + a[i] + " >= '" + document.f[a[i] + "_A"].value + "' AND " + a[i] + " <= '" + document.f[a[i] + "_B"].value + ") or DATEADD" + "(" + "dd, 0, DATEDIFF" + "(" + "dd, 0," + a[i] + ")) = '" + document.f[a[i]].value + "'";

我用于此的选项:

  • 优化:仅限空白
  • 格式:漂亮打印

尽量避免这种复杂的线条。利用变量。使用以下内容可以实现相同的结果:

var old = document.f.SQL.value + a[i];
var sql_a = document.f[ a[i] + "_A" ].value;
var sql_b = document.f[ a[i] + "_B" ].value;
var whatever = document.f[ a[i]        ].value;
// (old) >= 'sql_a' AND
var sql = "(" + old + ") >= '" + sql_a + "' AND ";
// A <= 'sql_b')
sql += a[i] + " <= '" + sql_b + "') "
// or DATEADD(dd, 0, DATEDIFF(dd, 0, A)) = 'whatever'
sql += "or DATEADD(dd, 0, DATEDIFF(dd, 0, " + a[i] + ")) = '" + whatever + "';
document.f.SQL.value = sql;

重点是,尝试将字符串拆分成较小的部分。我没有在上面的小部分中拆分查询,这取决于你。

答案 1 :(得分:1)

如果你的字符串中需要单引号而且没有双引号(在其中),那么使用双引号来分隔你的字符串,你不需要转义单引号。

我通常更喜欢使用单引号来分隔JavaScript中的字符串,尤其是当我倾向于处理HTML字符串时,因为我更喜欢使用双引号来表示属性。您可以使用单引号或双引号,但没有像PHP或其他语言那样的功能差异。

你的表达很难阅读。考虑简化它,将其放入几个指令或查找/编写某种可重用的令牌替换例程。

括号\(的转义看起来没必要,并且连接两个字符串文字' + '

document.f[a[i]+"_A"].value之类的表达式如果在使用之前被分配到有意义的命名变量,将更容易阅读。