为什么“ i”不总是等于零?循环的后续迭代是否跳过var声明?我知道,在第一次迭代结束时,i = 1,但是随后经过时,var声明不重置i = 0吗?
当我使用args运行该函数时,所有方法都可以正常工作,但是我不知道为什么如果有必要,为什么不重设var声明。如果在循环外声明var“ i”,这对我来说很有意义。
function multiply(arr, n) {
var product = 1;
for (var i = 0; i < n; i++) {
product *= arr[i];
}
return product;
}
for
循环声明的第一部分(在大多数情况下)在循环的最开始仅运行一次。您的代码等效于:
function multiply(arr, n) {
var product = 1;
var i = 0;
for (; i < n; i++) {
product *= arr[i];
}
return product;
}
相当于:
function multiply(arr, n) {
var product = 1;
var i = 0;
while (true) {
// for loop body:
product *= arr[i];
// for loop declaration part:
i++;
if (!(i < n)) break;
}
return product;
}
因此,i
在开始时只分配了一次0
。