来自雄辩的JavaScript。由于“i”从-1开始并且在每个循环中减1,所以这应该永远不会达到结束条件“i> = 0”。但代码可以运作。
function arrayToList(array) {
var list = null;
for (var i = array.length - 1; i >= 0; i--)
list = {value: array[i], rest: list};
return list;
}
console.log(arrayToList([]));
//null
答案 0 :(得分:14)
你的分析是错误的。如果array
为空,i
以-1开头,则条件i >= 0
失败,因此循环永远不会执行。循环到 continue 必须满足条件,而不是循环退出。
答案 1 :(得分:1)
function arrayToList(array) {
var list = null;
for (var i = array.length - 1; i >= 0; i--) // i = -1, i is not greater than or equal 0 so it never enters the loop
list = {value: array[i], rest: list};
// list is null and loop finished with i -1
return list;
}
console.log(arrayToList([]));
//null
所以基本上跟随的是运行的语句:
答案 2 :(得分:1)
for (statement 1; statement 2; statement 3) { code block to be executed }
语句1在循环(代码块)开始之前执行。
语句2定义了运行循环的条件(代码块)。
每次执行循环(代码块)后都会执行语句3。
声明2为false,因此未输入循环体