![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
浏览器
文章平均质量分 59
渣渣砖
这个作者很懒,什么都没留下…
展开
-
JavaScript与生俱来的特性---异步与回调
js单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等着。 如果是因为计算量大,CPU忙不过来,倒也合乎逻辑,但是很多时候CPU是闲着的,因为IO设备(输入输出设备)很慢(比如Ajax操作从网络读取数据),于是不得不等着结果出来,再往下执行。 JavaScript语言的设计者意识到,这时主线程完全可以不管IO设备,挂起处于等待中的任务,先运行排在后面的任务。等到IO设备返回了结果,再回过头,把挂起的任务继续执行下去。 于是,所有.原创 2021-05-08 15:44:40 · 304 阅读 · 3 评论 -
为啥JavaScript是单线程?
思考:JavaScript语言的一大特点就是单线程。也就是说,同一个时间只能做一件事。那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊。 JavaScript的单线程,与它的用途有关。 作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。 比如,假定JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准? 若以多线程的方式操作..原创 2021-05-08 15:10:24 · 303 阅读 · 4 评论 -
什么是JavaScript解析引擎?
JS是解释型语言,所以它无需提前编译,而是由解释器实时运行。 JavaScript解析引擎就是能够“读懂”JavaScript代码,并准确地给出代码运行结果的一段程序。就是经常听到的js解释器,JavaScript引擎做的事情就是解析你这段代码,并给出运行结果。 看过编译原理的人大概都了解,对于静态语言来说(如Java、C++、C),处理上述这些事情的叫编译器(Compiler); 相应地对于JavaScript这样的动态语言则叫解释器(Interpreter)。 两者的区别用一句话来概括就是:..原创 2021-05-08 14:47:48 · 697 阅读 · 0 评论 -
js的垃圾收集机制
js中的垃圾收集:标记清除和引用计数(主流是标记清除) 垃圾收集器在运行的时候会给存储在内存中的所有变量都加上标记,然后,它会去掉环境中的变量及被环境中的变量引用的变量的标记。而在此之后再被加上离开环境时标记的变量将被视为准备删除的变量,原因是环境中的变量已经无法访问到这些变量了,最后,垃圾收集器完成内存的清除工作。销毁哪些带标记的值,并回收他们所占用的内存空间。 引用计数的含义是跟踪记录每个值被引用的次数。当一个变量引用了另一个变量的时候,则这个值就会加1,如果一个变量又赋值给了另外一个变原创 2021-05-08 12:03:29 · 126 阅读 · 0 评论 -
浏览器是如何工作的?
废话少说,先来一张图,大致过一下浏览器的主要组成部分: 先解释下各部分是干啥的: 1:User Interface:用户界面,即我们所看到的浏览器; 2:Browser Endine:浏览器引擎,用来查询和操作渲染器引擎; 3:Renderingengine:渲染引擎,用来显示请求的内容,负责解析HTML、CSS; 4:Networking:负责网络请求; 5:Javascript Interpreter:js解析器,用来解析执行js代码; 6:DisplayBackend:UI后端..原创 2021-01-19 16:24:58 · 220 阅读 · 0 评论