用javascript写这篇文章的最短方法是什么?

用javascript写这篇文章的最短方法是什么?,javascript,Javascript,我想实现这一点: //foo is a boolean if(foo){ count++; } else { count--; } 我怎么能用一行写这个呢?你可以把foo当作一个数字,特别是1或0: count += 2 * foo - 1; 试试这个: count += foo ? 1 : -1 请试试这个: foo ? count++ : count--; 最简单的方法是保留现有逻辑并转换为三值: count+=foo?1 : -1;foo?计数++:计数-- 这称为

我想实现这一点:

//foo is a boolean
if(foo){
    count++;
} else {
    count--;
}

我怎么能用一行写这个呢?

你可以把
foo
当作一个数字,特别是
1
0

count += 2 * foo - 1;
试试这个:

count += foo ? 1 : -1
请试试这个:

foo ? count++ : count--;

最简单的方法是保留现有逻辑并转换为三值:


count+=foo?1 : -1;

foo?计数++:计数--

这称为三元运算符,请参见

最简单的解释是:
如果是这样的话?然后这个:否则这个

使用Java脚本这应该是最短的:

count += foo || -1;

除了这段代码完全不可读之外……OP确实要求使用“最短”的方式(在问题的标题中),而不是一个可读的简短答案。就我个人而言,我觉得hkf的答案是最具可读性的,这可能是我应该如何做到的,因为我看重清晰而不是简洁(这对于那些花费大量时间工作/修改他人代码的人来说是如此),虽然它通常被称为三元表达式或三元运算,但我喜欢这一个,因为它既简短又清晰,而且我认为它比Nikhil的答案更容易阅读。我个人认为清晰胜过简洁。如果你花了大量时间处理别人的代码,你也会重视清晰性方面。你不需要分配到
count
count++
count--
已经处理好了。
count++
count--
在这里更有意义,然后你甚至不需要分配任务。同意。但是性能的任何改进都是存在的?你假设
foo
的计算结果为1,没有理由假设从OP来看,如果
foo=12
foo={…}
?引用自OP:
//foo是一个布尔值
好的,遗漏了注释。不过,这仍然是一种冒险的方法。代码越少并不总是越好(除非你对“更好”的唯一标准是代码越少,这是不明智的)。但在这种情况下,提供的三元操作之一可能是最好的。
count += foo || -1;