在javascript中,在循环中声明一个带有“let”的变量时,我很难找到有关性能影响的信息。如果我这样做的话,我已经找到了很多关于所述变量范围的信息,但没有发现性能影响或缺乏这些信息。
例如,在下面的代码(二进制搜索算法)中,我在while循环中声明了中点变量。
const binarySearch = (arr, num) => {
if(arr.length === 0) return false;
if(arr.length === 1) return arr[0] === num;
let left = 0;
let right = arr.length - 1;
while (left < arr.length && right >= 0){
let midpoint = Math.floor((right + left) / 2);
if(arr[midpoint] === num) return true;
if(arr[midpoint] < num) left = midpoint + 1;
else right = midpoint - 1;
}
return false;
}
我的理解是,这将中点的范围限制在while循环本身,我理解这一点,在本例中这很好。
我发现有信息说,如果我使用“var”来声明中点,而不是“let”,那么在循环内部或外部声明中点的性能将无关紧要,因为“var”是自动提升的。同样,这是有道理的,我相信我理解。
但是我找不到关于在循环中用“let”声明中点是否会对性能产生负面影响的信息。
这是否会在每个循环的内存中创建一个新的变量,从而比我首先在循环外用“let”声明中点,然后用每个循环更新其值时占用更多内存?请参见下面的示例:
const binarySearch = (arr, num) => {
if(arr.length === 0) return false;
if(arr.length === 1) return arr[0] === num;
let left = 0;
let right = arr.length - 1;
let midpoint;
while (left < arr.length && right >= 0){
midpoint = Math.floor((right + left) / 2);
if(arr[midpoint] === num) return true;
if(arr[midpoint] < num) left = midpoint + 1;
else right = midpoint - 1;
}
return false;
}
暂无答案!
目前还没有任何答案,快来回答吧!