美文网首页
javascript的运行机制

javascript的运行机制

作者: 太_2_真_人 | 来源:发表于2021-05-27 15:59 被阅读0次

    javascript为什么是单线程的?

    javascript设计之初就是用来处理页面交互,DOM操作的。如果是多线程的话,一个线程修改DOM,一个线程删除该DOM,浏览器就不知道该以哪个为准了。

    所以为了避免复杂性,从一诞生起,javascript就是单线程的。这也是这门语言的一个特性,将来也不会改变。

    为了利用多核CPU的计算能力,html5提出webWorker标准,允许javascript创建多个线程,但该子线程完全受主线程控制,且不得操作DOM,所以这个标准并没有改变javascript单线程的本质。

    事件循环(Event Loop)

    受单线程限制,javascript执行代码顺序是至上而下。同步任务排队执行,遇到异步事件的时候会把异步事件挂起到任务队列(task quene)。主线程的任务在执行的时候会产生堆(heap)和栈(stack),栈中代码会调用各种外部API,又会挂起一些异步事件。当执行栈中代码执行完毕之后,主线程就会读取任务队列,按照先入先出的原则,依次处理。这个过程中又会遇到宏任务微任务的事件。主线程会优先处理微任务,当微任务被处理完毕后,再去处理宏任务(例如setTimeout...),此时其他宏任务会在任务队列里依次排队等待执行。主线程如此循环往复的运行机制又被称为Event Loop

    主线程&&事件队列.jpg Event Loop.png

    相关文章

      网友评论

          本文标题:javascript的运行机制

          本文链接:https://www.haomeiwen.com/subject/blokhltx.html