js是单线程的;

js中的线程分为三种

1.页面渲染

2.主代码逻辑

3.事件触发;

下面我们来看一段代码

<script>

    setTimeout(function(){
    console.log(123);
    },0);
    </script>

按照js的api来看,上面的代码应该是0秒后执行,但真的是这样吗?

js中没有控制线程的,所以无法让线程进行睡眠;但我们可以用alert阻塞线程;

当我们在后面加alert后,我们看到,123并没有立刻输出;而是等待弹窗关闭后才输出;

在js中,遇到回调等都会将回调暂时挂起,等待主流程的执行完毕才会执行回调等函数;

看如下代码

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <script>
 7         window.onload = function () {
 8             var divs = document.getElementsByTagName("div");
 9             for (var i = 0; i < divs.length; i++) {
10                 var div = divs[i];
11 
12                 div.onclick = function () {
13                         alert("我是第"+ (i+1) +"个div");
14                 };
15 
16             }
17         }
18     </script>
19 </head>
20 <body>
21 <div>我是第1个div</div>
22 <div>我是第2个div</div>
23 <div>我是第3个div</div>
24 <div>我是第4个div</div>
25 <div>我是第5个div</div>
26 <div>我是第6个div</div>
27 <div>我是第7个div</div>
28 <div>我是第8个div</div>
29 <div>我是第9个div</div>
30 <div>我是第10个div</div>
31 </body>
32 </html>
View Code

相关文章:

  • 2021-11-20
  • 2021-06-14
  • 2021-04-14
  • 2021-12-18
  • 2021-09-27
猜你喜欢
  • 2021-06-03
相关资源
相似解决方案