Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环流动台阶_Javascript_For Loop_Null - Fatal编程技术网

Javascript 循环流动台阶

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

这个函数来自《雄辩的Javascript》一书,第3章,函数

我不明白剧本的大意

这是一个“for循环”,它的任务是生成一个等于0且小于0的计数值

一开始我以为它会停止这个程序,但这个程序很聪明。为什么不可能运行循环不会停止程序? 以下是片段:

    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