在 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 循环中使用 -- 运算符会产生意想不到的结果的主要内容,如果未能解决你的问题,请参考以下文章
尝试在 Bash shell 中运行函数会产生意想不到的结果
在 Axios 请求上使用 Lodash 的 Debounce 会产生意想不到的结果