Javascript 函数未按正确顺序运行

Javascript 函数未按正确顺序运行,javascript,Javascript,在我的while循环中,我希望它会不断提示用户输入,除非我打破循环。但是,一旦我进入if块,除非我终止代码,否则它将无法生成printtoscreensessage函数 我不知道我做错了什么。我希望它在继续提示之前打印消息。 我怎样才能解决这个问题 让信息; 让我们搜索; 函数printToScreenmessage{ 让outputDiv=document.getElementById'output'; outputDiv.innerHTML=消息; } 功能提示器{ 搜索=提示输入学生姓名;

在我的while循环中,我希望它会不断提示用户输入,除非我打破循环。但是,一旦我进入if块,除非我终止代码,否则它将无法生成printtoscreensessage函数

我不知道我做错了什么。我希望它在继续提示之前打印消息。 我怎样才能解决这个问题

让信息; 让我们搜索; 函数printToScreenmessage{ 让outputDiv=document.getElementById'output'; outputDiv.innerHTML=消息; } 功能提示器{ 搜索=提示输入学生姓名; 返回搜索; } 函数搜索学生{ whiletrue{ 搜索=提示用户;
forlet i=0;i这是因为浏览器在计算js时不会重新绘制页面。 您可以用setTimeout中的递归调用替换whiletrue:

function searchStudent(){

  search =promptUser();

  for(let i = 0; i<students.length; i++){

    if(search.toLowerCase() === students[i].name.toLowerCase())
    {
      let student = students[i];
      message = `<h4>Student: ${student.name}</h4>`; 
      message += `<p> Track: ${student.track} 
                  <br> Achievements:${student.achievements}
                  <br> Points: ${student.points}
                  </p>`; 
      printToScreen(message);
    }

    else if( search ===null || search.toLowerCase() === 'quit'){
      message = `<p>Thanks.Goodbye! </p>`;

      printToScreen(message);
      break;
    }   
    else{
         message = `<p> Student ${search} does not exist. Try Again!</p>`;
         printToScreen(message);
    }      
  }

  setTimeout(function(){
      searchStudent();
  },5);
}
searchStudent();

你永远不会跳出while循环,你只会跳出for循环。因此你创建了一个无休止的循环。我在哪里可以阅读更多关于这个JavaScript行为的信息,以便我知道将来如何使用它?