假设有如下代码:
const a=[1,2,3]
let n=0
while(n<a.length){
console.log(a[n])
n++
}
如上代码中,循环条件中的a.length是只计算一次,还是会在每次循环时重复计算呢?
答案是会在每次循环时重复计算,下面是chatGpt对这个问题的回答(我自己实际操作也验证了这一点)。
明白了这一点,那么以后在写类似循环时就要注意,数组在循环中发生长度变动的问题 。
如果已知数组在循环中不会发生长度变动,或者对长度变动不关心,可以在循环前先获取常量length,然后以常量length进行循环判断,是更加高效的写法。如下:
const a=[1,2,3]
const length=a.length
let n=0
while(n<length){
console.log(a[n])
n++
}
总结:javaScript 的while循环中,循环条件如果中的array.length会持续计算,而不是只计算一次。