使用 if-else 速记时省略第二个表达式

我可以写没有的速记吗?if elseelse

var x=1;

x==2 ? dosomething() : doNothingButContinueCode();   

我注意到为其他工作(但我不知道为什么或者这是否是一个好主意)。null

编辑:你们中的一些人似乎很困惑,为什么我会费心尝试这个。请放心,这纯粹是出于好奇。我喜欢乱搞JavaScript。


答案 1

你所拥有的是对三元运算符的相当不寻常的使用。通常,它被用作表达式,而不是语句,在一些其他操作中,例如:

var y = (x == 2 ? "yes" : "no");

因此,为了可读性(因为你正在做的事情是不寻常的),并且因为它避免了你不想要的“其他”,我建议:

if (x==2) doSomething();

答案 2

这也是一个选项:

x==2 && dosomething();

dosomething()仅当计算结果为 true 时才会调用。这称为短路x==2

在这样的情况下,它不常用,你真的不应该写这样的代码。我鼓励这种更简单的方法:

if(x==2) dosomething();

您应该始终编写可读的代码;如果您担心文件大小,只需借助众多JS压缩器之一创建它的缩小版本即可。(例如谷歌的闭包编译器)