这有效
if(a != "") {
$('.a').css('background','red');
}
但这个速记没有
a != "" ? $('.a').css('background', 'red');
我得到了:
令牌
;
的意外结束错误
答案 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)
答案 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');