JavaScript 简写 if 语句,没有 else 部分

新手上路,请多包涵

所以我使用的是简写 JavaScript if / else 语句(我在某处读到它们被称为三元语句?)

 this.dragHandle.hasClass('handle-low') ? direction = "left" : direction = "right"

这很好用,但是如果以后我只想使用速记 if ,而不使用 else 部分呢?喜欢:

 direction == "right" ? slideOffset += $(".range-slide").width()

这可能吗?

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

阅读 774
2 个回答

您可以使用 && 运算符 - 仅当第一个为真时才执行第二个操作数表达式

direction == "right" && slideOffset += $(".range-slide").width()

在我看来 if(conditon) expressioncondition && expression 更具可读性

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

不要将其视为控制块(即:if-else 或开关)。它并不是真正用于在其中运行代码。

你可以。它变得非常丑陋,非常快,这违背了目的。

您真正想要使用它的是 ASSIGNING VALUES

以您最初的示例为例,稍微翻转一下,您会得到:

 direction = (this.dragHandle.hasClass("handle-low")) ? "left" : "right";

看。现在我所做的是我已经采取了一些需要 if/else 或 switch 的东西,这些东西本来可以用来分配给那个值,而且我已经很好地清理了它。

你甚至可以做一个 else-if 类型的三元:

 y = (x === 2) ? 1 : (x === 3) ? 2 : (x === 4) ? 7 : 1000;

如果你愿意,你也可以用它来触发代码,但一段时间后它变得非常困难,要知道发生了什么(参见前面的例子,看看即使是赋值也可以一目了然地看起来很奇怪)……

 ((this.dragHandle.hasClass("...")) ? fireMe(something) : noMe(somethingElse));

…这通常会起作用。

但它并不比 if 或分支、立即调用函数更漂亮或更有用(非 JS 程序员或未受过训练的 JS 程序员会为了维护你的代码而大喊大叫)。

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

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