Javascript while循环导致浏览器崩溃,但对于循环don';滚动事件中的t

Javascript while循环导致浏览器崩溃,但对于循环don';滚动事件中的t,javascript,Javascript,当滚动事件发生时,我尝试进行二进制搜索(基于while循环的二进制搜索) 但当我用鼠标滚轮滚动时,它会在滚轮上下移动后导致浏览器崩溃 相比之下,当我尝试基于for循环的线性搜索时,当我快速上下滚动时,它会冻结,但它会解冻,以便我可以看到结果 我在React的效果挂钩中遇到了这个问题(当出现滚动时,效果运行),所以当时我认为这是React的问题 但我测试了香草javascript。这不是我的问题 下面是一段代码片段 文件 #家长1,#家长2{ 高度:500px; 溢出:滚动; } #孩子1,孩

当滚动事件发生时,我尝试进行二进制搜索(基于while循环的二进制搜索) 但当我用鼠标滚轮滚动时,它会在滚轮上下移动后导致浏览器崩溃

相比之下,当我尝试基于for循环的线性搜索时,当我快速上下滚动时,它会冻结,但它会解冻,以便我可以看到结果

我在React的效果挂钩中遇到了这个问题(当出现滚动时,效果运行),所以当时我认为这是React的问题 但我测试了香草javascript。这不是我的问题

下面是一段代码片段


文件
#家长1,#家长2{
高度:500px;
溢出:滚动;
}
#孩子1,孩子2{
高度:20000像素;
}
const parent1=document.getElementById('parent1');
const parent2=document.getElementById('parent2');
让数组=[];
for(设i=1;i{
for(设i=0;i{
让start=0;
让end=array.length-1;
让中间=数学圆((结束-开始)/2);
让结果;
while(开始5){
结束=中间-1;
中间=数学轮((结束-开始)/2);
}else if(数组[中间]<5){
开始=中间+1;
中间=数学轮((结束-开始)/2);
}else if(数组[中间]==5){
结果=数组[中间];
打破
}
}
})
当你滚动上div(for loop)时,它有时会冻结,但会解冻 当你急刹车时,它会在一些车轮控制后崩溃


我测试了chrome和firefox。浏览器之间没有区别。

这是因为JS是单线程的。@ilkerkaran但为什么for循环只是冻结,为什么while循环崩溃?我不熟悉javascript和编程。记住,
round
可以上升或下降。对于某种二进制切分,您需要保持一致。要么
Math.trunc()
要么
Math.ceil()
@Keith谢谢你的建议这是我的错。我应该加上开始和结束,而不是从结束减去开始