JavaScript if-else简写错误

时间:2015-04-08 01:57:16

标签: javascript jquery

这有效

if(a != "") {
    $('.a').css('background','red');
}

但这个速记没有

a != "" ? $('.a').css('background', 'red');

我得到了:

  

令牌;的意外结束错误

4 个答案:

答案 0 :(得分:4)

在这种情况下,您不希望else案例,而shorthand一定不能没有?, :运算符!

所以,这也是一个选择:

a != "" && $('.a').css('background', 'red');
仅在$('.a').css('background', 'red');时才会调用

a != ""。这称为Short-circuiting

在这种情况下不常用,你真的不应该写这样的代码。我会建议这种方法:

if(a != "")  $('.a').css('background','red');

或更好:

if(a != "") { $('.a').css('background','red'); }

您应该始终编写可读代码;

如果您担心文件大小,只需在数千个JS压缩器之一的帮助下创建它的缩小版本。 (只需看看Google's Closure Compiler

答案 1 :(得分:3)

速记

如果那么

这使用&&

a != "" && $('.a').css('background', 'red');

当一方评估为真时,另一方运行。

<小时/>

如果那么

这个语法是 IF?THEN:ELSE

a != "" ? $('.a').css('background', 'red') : $('.a').css('background', 'blue');

你不能简单地离开&#39;出了部分内容

问题

您使用的简写是 IF THEN ELSE 。您将其视为 IF ELSE 。要解决此问题,请改用以下代码:

a != "" && $('.a').css('background', 'red');

当你忽略另一方是 IF ELSE THEN 语句时,它类似于写作

if (a != "") {
    $('.a').css('background', 'red')
} else 

编译器希望:表示速记的下一部分,但它会看到;

更多

我不鼓励你编写缩小代码,因为它令人困惑,难以阅读和修改。我建议使用online compressor such as jscompress.com。要编写干净整洁的代码,请将其写出来

if (a !== "") {
    $('.a').css('background', 'red');
}

这清楚地表明您正在做什么,不易出错,更容易编辑。

<小时/> 如果您想学习良好的编码实践,请查看JSLint (非JSHint)
I learned my shorthands from here

答案 2 :(得分:1)

您正在尝试使用以下形式的ternary expression

(condition) ? (foo) : (bar);

这是

的简写
if (condition) {
    // do whatever foo is
} else {
    // do whatever bar is
}

如果您使用此语法, 必须 提供else条件的内容(在上面的案例中为bar)。


我认为你想做的是:

a != "" && $('.a').css('background', 'red');

只有$('.a').css('background', 'red');才能运行a != ""。这称为(Vikrant指出)Short-Circuit Evaluation


<强>参考文献:

答案 3 :(得分:0)

这个怎么样...希望我记得正确,并且比minifier更好。

a !== "" && $('.a').css('background','red');