【问题标题】:Using the -- operator in a while loop produces unexpected results在 while 循环中使用 -- 运算符会产生意想不到的结果
【发布时间】:2015-07-22 13:42:55
【问题描述】:

在这个公式中,

var x = 5; while(x--) { console.log(x) }

输出是

4
3
2
1
0

为什么会输出0?在第五次迭代中,x-- 将等于 0,这是错误的,因此循环不应运行。

同样,这会返回true

var x = 1;
(x--) == true;

但这返回错误

0 == true

【问题讨论】:

  • 因为-- 发生在 x 被评估之后。对比--x
  • 公平地说,大多数具有相似运算符的语言都可以工作......好吧,相似。
  • 这与 Javascript 无关,这就是后增量在每种语言中的工作方式?
  • 前缀和后缀的行为在这里并不是 JavaScript 的奇怪之处
  • 嘿。您不能将此归咎于 JavaScript。后减运算符在 C、C++、Java 和 C# 以及该家族中我现在没有想到的其他语言中的行为方式相同。

标签: javascript loops while-loop


【解决方案1】:

x-- 首先计算然后递减变量。 如果你使用 --x 代替,你会得到你所期望的。

【讨论】:

  • 有趣,它也在块之前对其进行评估。
猜你喜欢
  • 2019-04-05
  • 2020-05-07
  • 1970-01-01
  • 2013-06-09
  • 1970-01-01
  • 1970-01-01
  • 2017-03-19
  • 2021-10-04
  • 1970-01-01
相关资源
最近更新 更多