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

新手上路,请多包涵

我可以在没有 if else 的情况下写 else 速记吗?

var x=1;

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

我注意到将 null 用于 else 作品(但我不知道为什么或者这是否是个好主意)。

编辑: 你们中的一些人似乎对我为什么要费心尝试这个感到困惑。请放心,这纯粹是出于好奇。我喜欢玩弄 JavaScript。

原文由 Nikki 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 444
2 个回答

这也是一种选择:

 x==2 && dosomething();

只有当 x==2 被评估为 true 时才会调用 dosomething() 。这称为 短路

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

 if(x==2) dosomething();

您应该始终编写可读的代码;如果您担心文件大小,只需在众多 JS 压缩器之一的帮助下创建一个缩小版本。 (例如 Google 的 Closure Compiler

原文由 ajax333221 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

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

 if (x==2) doSomething();

原文由 Nicole 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题