1、closure闭包是什么
javascript的闭包是一个函数的局部变量被函数内定义的嵌套函数引用,函数又返回了其内部的嵌套函数,这样,函数执行后,其局部变量将被持续保留而暂时不会被GC回收,称这个语言特性叫闭包(自己的理解,非官方)。
2、链式作用域Scope Chains
每一条链式作用域的尾端是Global(node)或window(浏览器),内层可访问外层,反之不成立。
没有使用var(let)声明的变量,则会被理解为对上层变量的引用,如一直追溯Global/window,还没有找到,就被自动创建为全局变量。不小心容易出现bug。
3、shadow现象
内层Scope中,通过定义与外层Scope一样名字的变量就可以shadow外层Scope的变量。屏蔽外层变量,防止访问。不小心则容易出现bug。
2、学习几个单词
closure n.闭包
vice-versa 反之亦然
conscious adj.意识到的;n.意识
particularly adv.特别;尤其;
in turn 反之;反过来
hence adv.因此;从此以后
relevant adj.相关的;有意义的,目的明确的
freed adj.释放的
Sweep v.打扫;清除
variation n.变动;变化
implication n.牵连;含意;暗示;卷入
maintained 维护
legal adj.合法的
nested adj.嵌套的
mechanism n.机制;原理
Phrased n.短语;习语;措辞;
implicitly adv.含蓄地;暗中地;
make sense 有意义; 言之有理
adhere vi.遵守;坚持;
denote vt.表示;象征
Lexical adj.词汇的;词典的
查看原文:http://blog.indexroot.net/2015/07/11/nodeschool-learn-scope-chains-and-closures/