Javascript 循环流动台阶
这个函数来自《雄辩的Javascript》一书,第3章,函数 我不明白剧本的大意 这是一个“for循环”,它的任务是生成一个等于0且小于0的计数值 一开始我以为它会停止这个程序,但这个程序很聪明。为什么不可能运行循环不会停止程序? 以下是片段:Javascript 循环流动台阶,javascript,for-loop,null,Javascript,For Loop,Null,这个函数来自《雄辩的Javascript》一书,第3章,函数 我不明白剧本的大意 这是一个“for循环”,它的任务是生成一个等于0且小于0的计数值 一开始我以为它会停止这个程序,但这个程序很聪明。为什么不可能运行循环不会停止程序? 以下是片段: var power = function (base, exponent) { var result = 1; for(var count = 0; count < exponent; count ++) { //repea
var power = function (base, exponent) {
var result = 1;
for(var count = 0; count < exponent; count ++) {
//repeat as many as needed the self multiplication.
console.log("count = ", count);
result *= base;
console.log(result);
}
return result;
};
console.log("finally we get the number ", power(2, 0));
/* A little question with exponent = 0
Why is that not an error. It is impossible to initiate
with count = 0 && count < exponent.
Weird.*/
因为
count
或者更确切地说0<0
是false
,所以循环不运行,并且在定义为1
时返回result
的值:
var result = 1;
for(var count = 0; false; count ++) {
// This doesn't run
}
return result; // So it's still 1
感谢fuyushimoya,我理解: 括号中的第一条语句是变量的初始化。在循环开始之前,无论如何都要对其进行atated。第二条语句是一个条件,在执行循环之前进行计算,如果该语句的布尔值为
true
,则执行循环内的语句。在每次循环迭代之后。它更改变量值,然后第二条语句测试这个新值,最后循环再次迭代
在第二条语句开始时为false的情况下,循环不会运行,情况就像只有第一条语句一样。请参阅。即使程序也知道这是不可能的,因此它跳过for循环并返回
1
,这是for循环之前的init。@fuyushimoya当然可以,但是可以理解如何操作吗?for循环的条件部分,即计数
,将在进入语句部分之前进行计算,如果它是false
(因为0<0是false),循环将结束,流将保持到下一个语句返回结果
。您应该检查的文档,init部分只是var count=0
,而count
不是init,而是检查循环是否可以进入其语句部分的条件。@fuyushimoya这是一个非常好的响应!计数<指数是检查for循环是否可以进入其语句部分的条件。非常清楚!!!如果我可以说,for循环不是本机操作,而是两步操作:如果countvar result = 1;
for(var count = 0; false; count ++) {
// This doesn't run
}
return result; // So it's still 1