深入理解JavaScript | 青训营笔记

55 阅读2分钟

JS的基本概念

诞生:\color{brown}{诞生:} 1995年,Brendan Eich开发

  1. 借鉴C语言的基本语法
  2. 借鉴Java语言的数据类型和内存管理
  3. 借鉴Scheme语言,将函数提升到“第一等公民”(first class)的地位
  4. 借鉴Self语言,使用基于原型(prototype)的继承机制

发展:\color{brown}{发展:} 1.Mocha→1995.9LiveScript→1995.12JavaScript
2.1997年6月,第一版ECMAScript发布
3.1999年12月,第三版ECMAScript发布
4.2009年12月,第五版ECMAScript发布
5.2009年,Ryan创建了Node.js 6.2010年,Isaac基于node.js写出了npm 7.2015年6月,第六版ECMAScript发布

在这里插入图片描述

  • 单线程
  • 动态、弱类型
  • 面向对象、函数式
  • 解释类语言、JIT
  • …… 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

数据类型

在这里插入图片描述

作用域

变量的可访问性和可见性
静态作用域\color{brown}{静态作用域},通过它就能预测代码在执行过程中如何查找标识符 在这里插入图片描述

变量提升

在这里插入图片描述

JS是怎么执行的

在这里插入图片描述 在这里插入图片描述

在这里插入图片描述

  • 全局执行上下文:\color{brown}{全局执行上下文:}代码开始执行是就会创建,将他压执行栈的栈地,每个生命周期内只有一份\color{red}{每个生命周期内只有一份}
  • 函数执行上下文:\color{brown}{函数执行上下文:}当执行一个函数时,这个函数内得代码会被编译,生成变量环境、词法环境等,当函数执行结束的时候该执行环境从栈顶弹出
var scop='global'
	func()
	console.log(company);
	function func(){
		var funVar='func'
		console.log('这是个函数',funcVar);
	}
	var company='字节跳动'

在这里插入图片描述 创建执行上下文的时候做了什么?

  • 绑定This
  • 创建词法环境
  • 创建变量环境

词法环境:\color{brown}{词法环境:}基于ECMAScript代码的词法嵌套结构来定义标识符和具体变量和函数的关联。一个词法环境由环境记录器和一个可能的引用外部词法环境的空值组成 变量环境:\color{brown}{变量环境:}变量环境和词法环境的一个不同就是前者被用来存储函数声明和变量(let和const)绑定,而后者只用来存储var变量绑定 Outer\color{brown}{Outer:}指向外部变量环境的一个指针 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

JS的进阶知识点

闭包

在这里插入图片描述

this

在这里插入图片描述

垃圾回收

在这里插入图片描述