在 while 循环中使用 -- 运算符会产生意想不到的结果

Posted

技术标签:

【中文标题】在 while 循环中使用 -- 运算符会产生意想不到的结果【英文标题】:Using the -- operator in a while loop produces unexpected results 【发布时间】: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# 以及该家族中我现在没有想到的其他语言中的行为方式相同。 【参考方案1】:

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

【讨论】:

有趣,它也在块之前对其进行评估。

以上是关于在 while 循环中使用 -- 运算符会产生意想不到的结果的主要内容,如果未能解决你的问题,请参考以下文章

在while循环中运行ffmpeg会导致内存泄漏

尝试在 Bash shell 中运行函数会产生意想不到的结果

在 Axios 请求上使用 Lodash 的 Debounce 会产生意想不到的结果

while循环产生的错误,这段代码有啥问题?

MySQL - 使用 LEFT JOIN 会产生意想不到的结果

python中while循环运算符及格式化输出