JavaScript if-else 速记错误

JavaScript if-else shorthand error

本文关键字:错误 if-else JavaScript      更新时间:2023-09-26

这有效

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

但这个速记没有

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

我得到了:

令牌;意外结束的错误

在这种情况下

,您不希望出现else情况,并且shorthand一定不能没有?, :运算符!

因此,这也是一种选择:

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

只有在a != "" 时才会调用$('.a').css('background', 'red');。这称为短路。

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

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

或更好 :

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

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

如果您担心文件大小,只需在数千个 JS 压缩器之一的帮助下创建它的缩小版本。(看看谷歌的闭包编译器(

速记

如果那么

这使用 &&

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

当一端的计算结果为 true 时,另一端将运行。


如果不是这样

这样做的语法是 IF?然后:否则

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

你不能简单地"遗漏"其中的一部分

问题

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

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

当你省略另一边是一个 If else 那么语句时,它类似于写

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

编译器期望一个:来表示速记的下一部分,但它看到了一个;

更多

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

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

这样可以清楚地看到您在做什么,不易出错,并且更易于编辑。


如果你想学习良好的编码实践,请查看JSLint(不是JSHint(。
我从这里学会了速记

您正在尝试使用以下形式的三元表达式:

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

这是

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

如果使用此语法,则必须为else条件提供一些内容(在上述情况下,bar (。


我认为你想做的是:

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

只有在a != "" 时才会运行$('.a').css('background', 'red');.这被称为(正如维克兰特指出的(短路评估。


引用:

  • 三元表达式:MDN 文档:条件运算符
  • 短路评估:MDN 文档:逻辑运算符

这个怎么样...希望我没记错,比缩小器做得更好。

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