javascript简写if语句,不带else部分

javascript简写if语句,不带else部分,javascript,if-statement,shorthand,shorthand-if,Javascript,If Statement,Shorthand,Shorthand If,所以我使用了一个简写的javascriptif/else语句(我读过一个叫做三元语句的地方) this.dragHandle.hasClass('handle-low')?direction=“left”:direction=“right” 这很好,但是如果以后我只想使用一个缩写if,而不使用else部分呢。比如: direction==“right”?slideOffset+=$(“.range slide”).width() 这可能吗?不,这是不可能的,因为三元运算符需要三个操作数 firs

所以我使用了一个简写的javascript
if
/
else
语句(我读过一个叫做三元语句的地方)

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

这很好,但是如果以后我只想使用一个缩写
if
,而不使用
else
部分呢。比如:

direction==“right”?slideOffset+=$(“.range slide”).width()


这可能吗?

不,这是不可能的,因为三元运算符需要三个操作数

first-operand ? second-operand (if first evaluates to true) : third-operand (if false)

您所拥有的将不起作用,但为什么不使用一行if语句来代替呢

if(direction==“right”)slideOffset+=$(“.range slide”).width()


这比Ray建议的方法需要更少的打字。当然,如果你真的想坚持这种格式,他的答案是有效的。

这并不能完全回答你的问题,但三元表允许你写得比你展示的少:

direction = this.dragHandle.hasClass('handle-low') ? "left" : "right";
现在我想起来了,是的,你也可以问你的问题:

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

这是一种理论。下一次我有机会
+=
三元编码时,我会试试这个。让我知道它是如何工作的

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

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

在我看来,
if(conditon)表达式
条件和表达式
更具可读性,不要将其视为控制块(即:if-else或开关)。 它并不是真正用来在里面运行代码的

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

您真正想要使用它的是赋值

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

direction = (this.dragHandle.hasClass("handle-low")) ? "left" : "right";
看。现在我所做的是,我得到了一些需要if/else或开关的东西,这些东西将被用来分配给一个值,我已经很好地清理了它

您甚至可以执行else if类型的三元:

y = (x === 2) ? 1 : (x === 3) ? 2 : (x === 4) ? 7 : 1000;
如果您愿意,您也可以使用它来触发代码,但过了一段时间后,要想知道发生了什么事情,就变得非常困难(请参阅上一个示例,以了解即使是赋值也会一眼看上去很奇怪)

…这通常会起作用


但它实际上并不比if或分支更漂亮或更有用,它可以立即调用函数(非JS程序员或未经培训的JS程序员会在维护代码时把自己弄得一团糟)。

条件运算符不是if
语句的简写。这是一个操作符,不是一个语句

如果您使用它,则应将其用作运算符,而不是语句

只需对第三个操作数使用零值:

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

您可以使用
&&
运算符

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

这些片段的技术术语是条件表达式,它使用条件运算符:?:。因为这个运算符需要三个操作数,所以它被称为三元运算符。速度快了两倍“未经培训的JS程序员会在维护代码时把自己弄得一团糟”我说得再好不过了。如果(条件)表达式,我可能会坚持使用
,但很高兴知道
&
运算符在这种情况下工作!我以前用过双引号,现在。。。类似于>>>方向==“正确”?slideOffset+=$(“.range slide”).width():”。。。。那么这会产生任何问题吗?这种类型的内联赋值有名称吗?
slideOffset+=direction==“right”&&&$(.range slide”).width()也可以工作,并将运算符保留在开头。这在角度生产构建中不起作用。它将抛出“无法测试“void”类型的表达式的真实性”
direction == "right" && slideOffset += $(".range-slide").width()