深入理解JS | 青训营笔记
1 JS的基本概念
发展:
1.Mocha.→1995.9 LiveScript →1995.12 JavaScript
2.1997年6月,第一版ECMAScript发布
3.1999年12月,第三版ECMAScript发布
4.2009年12月,第五版ECMAscript发布5.2009年,Ryan创建了Node.js
6.2010年,lsaac基于node.js写出了npm
7.2015年6月,第六版ECMAScript发布
数据类型:
作用域:
2 JS是怎么执行的
全局执行上下文:
代码开始执行时就会创建,将他压执行栈的栈底,每个生命周期内只有一份。
函数执行上下文:
当执行一个函数时,这个函数内的代码会被编译,生成变量环境、词法环境等,当函数执行结束的时候该执行环境从栈顶弹出。
词法环境:
基于ECMAScript 代码的词法嵌套结构来定义标识符和具体变量和函数的关联。一个词法环境由环境记录器和一个可能的引用外部词法环境的空值组成。
变量环境:
变量环境和词法环境的一个不同就是前者被用来存储函数声明和变量(let和const)绑定,而后者只用来存储var变量绑定。
Outer:
指向外部变量环境的一个指针。
3 JS的进阶知识点
闭包:
通常,如果引用闭包的函数是一个全局变量,那么闭包会一直存在直到页面关闭;但如果这个闭包以后不再使用的话,就会造成内存泄漏。
如果引用闭包的函数是个局部变量,等函数销毁后,在下次JavaScipt引擎执行垃圾回收时,判断所闭包这块内容如果已经不再被使用了,那么lawaSocipt引擎的垃圾回收器就会回收这块内存。