while循环一元递增和递减不起作用

oqx*_*oqx 1 javascript

我正在尝试使用while循环来减少计数器,然后在条件语句中对其进行评估.

例如,此代码将导致6

var counter = 3;
var factorial = 1;

while (counter)
    factorial *= counter--;

console.log(factorial);
Run Code Online (Sandbox Code Playgroud)

而这个结果为0

var counter = 3;
var factorial = 1;

while (counter--)
    factorial *= counter;

console.log(factorial);
Run Code Online (Sandbox Code Playgroud)

MKo*_*ris 5

    var counter = 3;
var factorial = 1;

while (counter--)
    factorial *= counter;

console.log(factorial);
Run Code Online (Sandbox Code Playgroud)

在更改计数器之前评估while条件.所以在第一个循环中,你评估3并传递vaue 2进行乘法运算.然后你评估2> 0并且你将1传递给乘法,因为counter--意味着首先使用当前值并且在值减少1之后立即使用.

所以在下一步中你评估if(1)哪个是真但你传递0,所以乘法的结果是0.然后while循环将使评估失败,因为计数器将是一个假值,如0