-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
阅读《你不知道的JavaScript》笔记 #5
Comments
词法化 (也叫单词化)大部分标准语言编译器的第一个工作阶段叫做 词法化。 了解了词法化后,下面我们就该说说正题了 词法作用域词法作用域就是定义在词法阶段的作用域。词法作用域是由你在写代码时将变量和块作用域写在哪里来决定的。
|
JavaScript闭包当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用 域之外执行。
我们将 bar 所引用的函数对象本身当作返回值,然后赋值给变量 baz 并调用 baz(),实际上只是通过不同的标识符引用调用了内部的函数 bar()。
无论通过何种手段将内部函数传递到所在的词法作用域以外,它都会持有对原始定义作用域的引用,无论在何处执行这个函数都会使用闭包。 |
常见的闭包
在上面代码中,i是定义在全局作用域中的一个变量,定时器的回调函数会在所有的循环执行完毕后才执行的,此时内存中的变量 i 的值等于6,
|
利用闭包实现的模块化
利用闭包,我们可以把函数内部的方法暴露出来,可以在其他地方引用。 |
理解JavaScript的环境
从头到尾负责整个JavaScript程序的编译及执行过程
引擎的好朋友之一,负责语法分析及代码生成等脏活累活
引擎的另一位好朋友,负责收集并维护由所有声明的变量组成的一系列查询,并实施一套非常严格的规则,确定当前执行的代码对这些标识符的访问权限。
The text was updated successfully, but these errors were encountered: