JavaScript简写if语句,不包含else部分
JavaScript shorthand if statement, without the else portion
所以我使用了一个简写的JavaScript if
/else
语句(我在某个地方读到它们被称为三元语句?)
this.dragHandle.hasClass('handle-low') ? direction = "left" : direction = "right"
这很好,但如果以后我只想使用缩写if
,而不使用else
部分,该怎么办。类似:
direction == "right" ? slideOffset += $(".range-slide").width()
这可能吗?
您可以使用&&
运算符-只有当第一个操作数表达式为真时,才会执行第二个操作数
direction == "right" && slideOffset += $(".range-slide").width()
在我看来,if(conditon) expression
比condition && expression
可读性更强
不要把它看作一个控制块(即:if-else或开关)。它并不是真正用来运行里面的代码的
你可以。它只是变得非常丑陋,非常快,这违背了目的。
您真正想要使用它的目的是分配值。
以你最初的例子为例,稍微颠倒一下,你就会得到:
direction = (this.dragHandle.hasClass("handle-low")) ? "left" : "right";
请参阅。现在我所做的是,我已经取了一些需要if/else或开关的东西,这些东西本来可以用来分配给那个值,我已经很好地清理了它。
你甚至可以做一个其他if类型的三元:
y = (x === 2) ? 1 : (x === 3) ? 2 : (x === 4) ? 7 : 1000;
如果你愿意的话,你也可以用它来激发代码,但过一段时间后,要知道发生了什么真的很困难(请参阅前面的例子,看看即使是分配也会一眼看起来很奇怪)。。。
((this.dragHandle.hasClass("...")) ? fireMe(something) : noMe(somethingElse));
这通常会起作用。
但它并没有比if或分支、立即调用函数更漂亮或更有用(非JS程序员或未经培训的JS程序员会在维护代码时自讨苦吃)。
您所拥有的不会起作用,但为什么不使用一行if语句呢。
if(direction == "right") slideOffset += $(".range-slide").width();
这比雷建议的方法需要更少的打字。当然,如果你真的想坚持这种格式,他的答案是有效的。
条件运算符是而不是if
语句的简写。这是一个运算符,而不是一个语句。
如果您使用它,您应该将它用作运算符,而不是语句。
只需对第三个操作数使用零值:
slideOffset += direction == "right" ? $(".range-slide").width() : 0;
您可以使用&&
运算符
direction == "right" && slideOffset += $(".range-slide").width()
否,这是不可能的,因为三元运算符需要三个操作数。
first-operand ? second-operand (if first evaluates to true) : third-operand (if false)
这并不能完全回答你的问题,但ternaries允许你写的东西比你显示的要少:
direction = this.dragHandle.hasClass('handle-low') ? "left" : "right";
现在我想一想,是的,你也可以问你的问题:
slideOffset + direction == "right" ? = $(".range-slide").width() : = 0;
这是一个理论。下次我有机会+=
三元的时候,我会试试这个。让我知道它是如何工作的!
您可以使用以下简写:
if (condition) expression
如果在某些情况下您真的想使用if
简写。尽管这可能不是最好的选择,但这是可能的。
condition ? fireMe() : ""
看起来很奇怪,确实有效。在Vue这样的框架中,你可以在模板中编写它,这可能会派上用场。
您可以使用短路评估Shorthand。如果你想要if条件,就写else条件。
let
a = 2,
b = a !== 2 || 'ok';
console.log(b);
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 货币代码为欧元-金额的格式不应包含小数
- 如何包含特定于每个视图angularjs的javascript文件
- 正在尝试使用if和else添加类,但无法正常工作
- 我如何修复包含在captcha的addthis中的错误
- 正在注入包含JS的HTML
- Json数据包含日期和时间格式
- Angular js-返回一个包含类似
- jQuery/JS包含运算符或类似运算符
- 如果href包含X,请更改href
- JavaScript数组包含一个值
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 在Meteor项目中安装并包含npm模块后出错
- 传递包含'%的参数'在URL中
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- JavaScript简写if语句,不包含else部分
- If else语句包含多个答案
- 当if条件包含或(||)两个变量时,jQuery if/else语句
- 包含if-else表达式的商务电话正则表达式