这是我们阅读Lodash源码的第3篇博客,在这篇文章里我们来学习一下Lodash的compact
方法。
compact
函数内部没有依赖别的函数,让我们先来看一下compact
函数的源码。
从今天开始,我准备把Lodash的源码从头到尾完整的阅读一遍;为了纪念这个过程,也为了有所收获;我会把阅读源码的过程用博客记录下来,我们的目的是为了从0开始,仿写一个完整的Lodash。这个项目的源码地址是sharp-lodash,期间我会把博客的内容同步到_anatomy_lodash上,大家可以在_anatomy_lodash看完整版,网站的项目地址是dreamapplehappy/_anatomy_lodash。还需要了解的一点是我们阅读的Lodash源码版本号是4.17.4
我们今天来聊一聊关于JavaScript文件的引入位置的问题;大家在平时的Web开发中有没有想过这样一个问题,那就是我应该在文档的头部(也就是<head>
标签内部里面)引入所需要的JavaScript文件还是应该在尾部(也就是</body>
之前)引入所需要的JavaScript文件呢?今天我们就来深入的探究一下这个问题。
首先我们需要了解的一点就是,在浏览器渲染页面之前,它需要通过解析HTML
标记然后构建DOM
树。在这个过程中,如果解析器遇到了一个脚本(script
),它就会停下来,并且执行这个脚本,然后才会继续解析HTML
。如果遇到了一个引用外部资源的脚本(script
),它就必须停下来等待这个脚本资源的下载,而这个行为会导致一个或者多个的网络往返,并且会延迟页面的首次渲染时间。
最近准备把JavaScript的许多原生API都研究一下,恰巧昨天在看querySelectorAll
方法的时候看到了一篇文章Why is getElementsByTagName() faster than querySelectorAll()?,这篇文章解释了为什么getElementsByTagName
方法比querySelectorAll
方法快的原因,如果你英语不错的话,推荐你看看原文。当然如果你不想看的话,继续把这篇文章看完也是可以得到答案的。