我是靠谱客的博主 勤恳水杯,最近开发中收集的这篇文章主要介绍js预解析和执行阶段浅谈【2021.10.13】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、为什么js执行时会阻塞后续页面的内容(包括页面的渲染、其它资源的下载)

       通常来说,js在载入后会马上执行(没有动用window.onloaddocmuemtrrady等事件),而浏览器需要一个稳定的DOM树结构,为了防止js修改DOM树,浏览器就会在js执行时阻塞后续页面的内容。

      JS运行在浏览器中是单线程的,在某个特定的时刻,只有特定的代码能够执行,并且阻塞其他代码的执行。而浏览器是事件驱动的,浏览器中很多行为是异步的,会创建事件放在执行队列中。Javascript引擎是单线程处理它的任务队列,所以当多个事件触发时,会依次放入队列,然后一个个响应。

        浏览器是多线程的,虽然JS运行在浏览器中,是单线程的,但是浏览器不是单线程的。浏览器中的很多异步行为都是由浏览器新开一个线程去完成的。Javascript引擎线程是浏览器多个线程中的一个,它本身是单线程的。浏览器还包括很多其他线程,如界面渲染线程,浏览器事件触发线程,Http请求线程等。所谓的javascript是单线程的,是指javascript运行在浏览器中是单线程的,叫做javascript引擎线程。
 

二、js代码的运行

1.预解析阶段

浏览器会先把所有函数定义提前,所有变量声明提前(let和const声明不会提升),变量的赋值不提前。

2.执行阶段

从上到下执行(按照js运行机制)。

最后

以上就是勤恳水杯为你收集整理的js预解析和执行阶段浅谈【2021.10.13】的全部内容,希望文章能够帮你解决js预解析和执行阶段浅谈【2021.10.13】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部