单线程与事件队列JS的代码的执行遵从单线程事件队列的事件处理机制事件队列中的任务执行的条件1、主线程已经空闲2、任务满足触发条件1、定时函数延时时间已经达到2、事件函数特定事件被触发3、ajax的回调函数服务器端有数据相应如何理解JS代码为单线程简单理解为自上而下的执行但因为事件队列的机制存在自上而下的执行过程中会先将任务添加到队列中当满足两个条件1、主线程已经空闲2、任务满足触发条件才会将队列中的任务添加到事件的主线程中执行举个例子理解事件队列就比如取号排队自上而下的执行到任务就取一个号码在队列中进行等待的时候当被叫到号码叫号有可能不是按顺序即任务满足了触发条件此时任务被添加到事件的主线程中执行先看一个定时器的例子console.log(1); setTimeout(function(){ console.log(2); },1); var sum 0; for(var i0;i100000000;i){ sum i; } console.log(sum); console.log(3);输出结果为//1 sum的值 3 2再看一个事件处理的例子input typebutton value点击 idbtn -----------------------------分割线---------------------------------------- window.onload function(){ var btn document.getElementById(btn); console.log(1); btn.onclick function(){ console.log(this.value); } console.log(3); }输出结果// 1 3 点击