数组应该是在JavaScript最常用的数据结构之一,我们有很多种方式来初始化一个数组。但是 JavaScript 怎样把一个数组的所有元素初始化为0 最有效率?为了得出答案,我们做了一下测试:
我们将在 Node 下(Node.js 版本 v8.4.0)初始化一个长度为 100 万的数组,来对比他们的性能。
数组应该是在JavaScript最常用的数据结构之一,我们有很多种方式来初始化一个数组。但是 JavaScript 怎样把一个数组的所有元素初始化为0 最有效率?为了得出答案,我们做了一下测试:
我们将在 Node 下(Node.js 版本 v8.4.0)初始化一个长度为 100 万的数组,来对比他们的性能。
CSS 2.1 已经定义了四种布局模式:
block 布局,是为了布局文档设计的(design for laying out document)
inline 布局, 是为了布局文本设计的
table 布局,以为了以表格的形式展示 2D 数据设计的
positioned 布局,是为了显示在文档中完成元素的定位而设计的,这种布局不用顾忌其他元素在文档中的位置。
这个W3C的文档介绍了一种新的布局模式,flex layout, 这种布局模式是为了更加复杂的web应用和网页设计的。
现在我们在开发一个网页的时候有很多的优化的最佳实践,诸如将Javascript放在文档的底部。很多时候我们已经将这个最佳实践当成了习惯,其实探究这些方法背后的原理还是挺好玩的一件事。当然在这里Google给出了很详细的文章说明
前端页面的优化其实需要从很多地方来考虑,但是优化的基础就是先弄清楚浏览器是如何展现一个页面的。明白了整个过程,当然知道了性能的瓶颈在哪里,当然也自然知道该如何针对性的去优化。
当然当你在浏览器中按下回车键到页面展现的整个过程
是一个很远古的面试问题,这个 github repo 很清楚而且详细的探究了整个过程。这里重点强调一下整个页面渲染的过程。
二次元中有一个词叫做立flag,暗示的剧情的发展。比如如果那个角色说了一句“我保证会活着回来”,基本上这个角色就离死不远了。Javascript 最近几年也发展出类似的玩意儿,表示将来的某种状态,叫做 Promises (当然这里没有死这么严重),早期 jQuery 的 Deferred 就是类似于 Promises 的实现(当然jQuery的Deferred不完全符合Promises现在的标准)。
所以,为什么Promises会出现?Promises最原始的是由 Daniel P. Friedman 和 David Wise 提出的。后来有出现了类似的概念叫做Futures。Futures和Promises的出现是为了解决并行编程中同步的问题。有关他们的介绍可以看这里 Futures and Promises。
虽然是搬运 wikipedia 的,还是要说一下一般我们会看到几个词 future, promise, deferred, delay 一般来说这几个词可以等价。但是按照原始的定义,或者更确切的从原始的意义上来解释 Futures 和 Promises 还是有细微的不同的。Futures 指的一个只读的变量的占位符,意思就是说 Futures 作为一个异步操作的符号表示,表示这个地方会有一个异步操作的返回。而 Promises 指一个可以对 Futures 进行设置或者操作的容器。 这在单词的字面的意思也能理解,未来是一种代指之后的某一时刻,而承诺本身就隐性地包含了未来。
对于现在已经过去了四分之一的2016年来说,现在才开始写2015年的总结似乎有点嘲讽。啊啊啊啊啊啊!可恶的拖延症( ゜- ゜)
记得18岁时候进大学的时候,少不更事,满是铿锵抱负,但是到最后只是平淡失意的过完了四年。过去五年中的前面四年,在印象中没有交到过什么好运。至少心里想做成的事,似乎也没完成啥。所以2015年,至少和前四年比起来是有那么一点小幸运。
这一年总结下来也就几件事,考上研,完成了生涯中最大一个项目,开始经济自给,体验了完全不同的大学生活。
再过几个小时就是世界杯决赛,于是在这空白的几个小时中,我决定一边吹着冷气一边码字。其实我也不知道为什么会决定码字来打发时光,因为我很清晰地记得距我上次码字已经过去了两年,估计就是心血来潮了吧。