在 CSS3 出来以前,我们通过 setTimeout
和 setInterval
来实现动画,我们熟悉并且热衷于它们的使用,但它背后的原理却未深究。把握核心,深究问题的根本,永远是我们的核心,今天我们了解一下定时器背后的男人——单线程。
|
|
出乎意料,上面这段代码,会先输出 1,然后输出 0。(等我们掌握了单线程,也就迎刃而解了)
读一书,增一智
在 CSS3 出来以前,我们通过 setTimeout
和 setInterval
来实现动画,我们熟悉并且热衷于它们的使用,但它背后的原理却未深究。把握核心,深究问题的根本,永远是我们的核心,今天我们了解一下定时器背后的男人——单线程。
|
|
出乎意料,上面这段代码,会先输出 1,然后输出 0。(等我们掌握了单线程,也就迎刃而解了)
原文链接:http://info.meteor.com/blog/an-interesting-kind-of-javascript-memory-leak
最近,Avi 和 David 在 Meteor 的实时HTML模板渲染系统中跟踪了一个惊人的 JavaScript 内存泄漏。修复将在 0.6.5 版本发布(现在处于 QA 最后阶段)。
我在网上搜索关于 javascript 闭包内存泄漏的变化,网上并未提及相关事情,似乎在 JavaScript 主题下,这是一个鲜为人知的话题。(大多数你找到的谈论的是老版本IE的差劲的垃圾收集算法,但这个问题影响甚至我目前的Chrome安装!)我后来发现了一个很棒的博客,由一个V8开发人员发布在此主题上,但似乎大多数 JavaScript 使用者还不知道他们必须注意这一点。
JavaScript是一门神秘的函数式编程语言,而且他的函数就是闭包:函数对象有权访问定义在它们封闭范围内的变量,甚至在此范围已经结束的时候。一旦函数运行结束,闭包所捕获的局部变量就会被垃圾回收,所有定义在闭包范围内的函数都会自我进行垃圾回收。
每写15行代码,就会遇到一个闭包。这句话毫不夸张,因为理论上来说,每一个函数都是一个闭包。
闭包是指那些能够访问独立(自由)变量的函数 (变量在本地使用,但定义在一个封闭的作用域中)。换句话说,这些函数可以“记忆”它被创建时候的环境。
也正是由于它的特性,还有一种说法,就是:
闭包是代码块和创建该代码块的上下文中数据的结合。
本来这篇文章是紧跟着 this
篇就要出来的,不想竟时隔近半年之期。从执行上下文,到作用域甚至闭包,这是一个小体系,缺了作用域以及闭包这部分,使我学习《Javascript Ninja》中设计函数式编程的的地方尤为吃力。遂补全这二章。
作用域指定了变量或者函数的可用范围
了解作用域,就是了解作用域链。
我经常需要让元素在垂直方向上对齐。
CSS
提供了很多可用的方法。有时候我用 float
解决问题,有时候使用 position: absolute
,而有些时候呢,甚至通过手动添加 margin
与 padding
这样污染代码的方式来实现。
我实在不喜欢这些解决方法。浮动元素仅在顶部对齐并且需要手动清除浮动。绝对定位使得元素脱离文档流,所以它们将再也无法影响周围元素。还有,使用固定 margin
和 padding
值的话,极小的改变都会立即破坏现有的布局。
但是,这里还有另一个角色: vertical-align
。我认为它应当受到重任。好了,确切地说,使用 vertical-align
来布局是一种 hack
行为,因为它不是为此而生。它用来排列文本和文本旁边的元素。尽管如此,你还是可以在不同的上下文中用 vertical-align
来灵活地、精细地排列元素。元素的大小并不需要知晓。元素会继续在文档流中,所以其他元素可以据此改变它们的尺寸。这些优势让它成为了有价值的选择。
line-height
是为数不多支持数值可以带单位可以不带单位的属性,但是其效果确实千差万别,今天会用数据来侃一侃其中的差异性。前面讲 IFC的时候说过要好好聊一聊行盒的高度,就在本文中来个大揭秘吧。
前方高能提示,第一大节全部都是原理性的研究,不想看可以略过-_-但你会后悔的,后面是实用性比较强的知识。
overflow
的知识点没有那么多,所以这篇文章里面概念性的东西只放了一个,干货实例反而很多,而且都是很多我们平时都必须要用的,也有一些可能容易被忽略的知识点本文都有提及。所以,不要没有耐心,这里都是你的菜!
当然文章也从来不是科普文,了解 overflow
基本概念就点击 CSS overflow 。
z-index
会为当前的盒创建层叠上下文,也会指定该盒在父级层叠上下文中的层叠等级。
What the fuck! 怎么越说越乱!什么是层叠上下文?什么是层叠等级?
一个页面我们平时看到的是平面的,我们感觉它就是一个水平面(二维)的东西。但是为什么元素互相之间覆盖,这就说明,它们在垂直方向上是有顺序的。一个盒创建了层叠上下文,就是给它自己划了一片自治区,下面的盒无论是排资论辈,抑或是创建了层叠上下文,都只能在这片区里面待着。