我正在学习关于javascript.info的循环教程,我很困惑为什么会发生以下情况:
let i = 3;
while (i) alert(i--);
结果:3、2和1
为什么第一个结果是3而不是2?
谢谢。
您正在使用递减(--(运算符
这就是MDN文档所说的
如果使用后缀,在操作数后面加运算符(例如,x--(递减运算符递减并返回之前的值递减。
如果使用前缀,在操作数之前加上运算符(例如--x(递减运算符递减并返回之后的值递减。
您看到的是递减前的值,这就是它的工作原理。如果您想要其他方式,请使用--i
--运算符的工作方式有两种。
以下代码在运行完后将减少1:
let i = 3;
while (i) alert(i--); //3
以下代码在运行之前将减少1:
let i = 3;
while (i) alert(--i); //2
我还建议在循环中而不是在警报中执行此操作。
示例:
let i = 3;
while (--i >= 0) alert(i); //2