js深入研究
js深入研究
JS是怎么被电脑读懂的?
我们知道js是一种解释型语言,python也是一样,而我们学过的c语言,Java 都是编译型语言。
首先,大家要知道,电脑(CPU)能听懂的指令,只有0和1(晶体管高电平代表1,低电平代表0)。同其他语言一样,想让机器知道我们的想法,就像两个不同国家间的人想要交流一样,需要一个翻译。对于电脑来说,这个“翻译”,就是编译器(解释器)。
先给大家科普一下c语言的“翻译”过程:
1.预处理,生成.i的文件
2.将预处理后的文件转换成汇编语言,生成.s文件
3.汇编变为目标代码(机器代码),生成.o的文件
4.连接目标代码,生成可执行程序
详细了解请看:<https://blog.csdn.net/liu1340308350/article/details/102875710>
或者是:<http://www.ruanyifeng.com/blog/2018/01/assembly-language-primer.html>
这就是编译型语言和电脑沟通的过程(感兴趣的童鞋可以自行深入研究)。
回到正题,js是怎么做到的?
js离不开的“翻译官”就是浏览器的内核。
浏览器内核是怎样翻译我们的代码呢
请先看一下这篇超详细的博客:<https://www.html5rocks.com/zh/tutorials/internals/howbrowserswork/#Introduction>
如果博客看不太懂的话,可以来看一下这个视频:<https://www.bilibili.com/video/BV1x54y1B7RE>
看完上面的东西,你应该对这个过程有了一个大概的了解
为什么要引入文档碎片来优化性能
我们在小学二年级学过数据结构中知道,树的遍历是从根节点开始的,插入一个新节点是在遍历的条件下进行的。在笔者的理解中,文档碎片就是指,先用把插入的节点构成一颗树,然后在把改树插入到DOM树中。这样,在要插入大量节点的情况下,是不是就节省了很多性能呢?而且你截取的每个元素是否使用(插入树中)也由你决定。(这个方法简直不要太妙,这里再次膜拜尤雨溪大佬)