我可以在if else
没有 的情况下写速记else
吗?
var x=1;
x==2 ? dosomething() : doNothingButContinueCode();
我注意到null
为 else 工作(但我不知道为什么或者这是否是个好主意)。
编辑:你们中的一些人似乎对我为什么要费心尝试这个感到困惑。请放心,这纯粹是出于好奇。我喜欢玩弄 JavaScript。
我可以在if else
没有 的情况下写速记else
吗?
var x=1;
x==2 ? dosomething() : doNothingButContinueCode();
我注意到null
为 else 工作(但我不知道为什么或者这是否是个好主意)。
编辑:你们中的一些人似乎对我为什么要费心尝试这个感到困惑。请放心,这纯粹是出于好奇。我喜欢玩弄 JavaScript。
您所拥有的是三元运算符的一种相当不寻常的使用。通常它在其他一些操作中用作表达式,而不是语句,例如:
var y = (x == 2 ? "yes" : "no");
因此,为了可读性(因为您所做的事情不寻常),并且因为它避免了您不想要的“其他”,我建议:
if (x==2) doSomething();
这也是一种选择:
x==2 && dosomething();
dosomething()
只有在x==2
评估为真时才会调用。这称为短路。
它在这种情况下并不常用,您真的不应该编写这样的代码。我鼓励这种更简单的方法:
if(x==2) dosomething();
您应该始终编写可读的代码;如果您担心文件大小,只需在众多 JS 压缩器之一的帮助下创建它的缩小版本。(例如 Google 的Closure Compiler)
另外一个选择:
x === 2 ? doSomething() : void 0;
如果你不做其他,为什么不做:
if (x==2) doSomething();
null
对于三元表达式的分支之一,使用是很好的。并且三元表达式可以作为 Javascript 中的语句。
不过,就风格而言,如果您想调用一个过程,使用 if..else 编写它会更清楚:
if (x==2) doSomething;
else doSomethingElse
或者,就你而言,
if (x==2) doSomething;