在这段代码中,我尝试查找数组中最大数的次数:
x = [1, 2, 2, 4, 2, 4];
for(let i = 0; i <= x.length; i++) {
let temp = x[0];
var count=1;
if(x[i] > temp) {
temp=x[i];
continue;
} else if(x[i] == temp) {
count++;
}
}
console.log(count);
当我使用这样的代码时,计数为1,表示它不会改变,但是:
x = [1,2,2,4,2,4];
var count=1;
for(let i = 0; i <= x.length; i++) {
let temp = x[0];
if(x[i] > temp){
temp = x[i];
continue;
} else if(x[i] == temp) {
count++;
}
}
console.log(count);
当我将var count放在循环之外时,它可以工作并显示2,但是为什么呢? var
不会成为全局变量,并且不会受到let的for循环作用域的影响吗?
答案 0 :(得分:2)
如果var count=1;
位于循环内 ,则每次循环重新开始时,count
都会被设置(即重置)为1
,从而导致相同的结果每次渲染循环时计数一次。这就是为什么您必须将放在循环之前。