8-深入浅出JS
一、简析与代码示例
-
JS是单线程
-
JS数据类型
const a={ name:'zq' } const b = a b.name='111' console.log(a,b) //{name:'111'}{name:'111'}const str = '11' let newStr = str newStr = '2' console.log(str,newStr) //'11''22'slice
const str = 'strstrstr' str.slice(0,2) console.log(str) //strstrstrpush
const arr = [1,2] arr.push(3) //[1,2,3] -
作用域
- 全局作用域
- 函数作用域
- 块级作用域(只自己在块内使用)
-
变量提升
console.log(company) var company="ByteDance" //undefined程序先扫一遍代码,看到
var company会提到最前,相当于:var company console.log(company) var company="ByteDance" //undefinedfunc() var func = showName function showName(){...} // 报错,因为func不会被提提升,是undefined
二、JS如何执行
源——(词法)——>AST——>字节码——(编译)——>机器码(好像)
源<——(语法)——AST 字节码——(解析)——>机器码
-
执行上下文
-
-
变量环境
- outer
-
词法环境
-
this
- 打印都是globa
-
-
(不知取什么名字)
- 全面——每个生命周期只有一份
- 函数
- Eva
-
-
(往回找变量)函数——>全局
-
类与闭包
三、进阶知识
-
垃圾回收
- 标记(相?)等(会停顿,耗时)
- 空间整理
-
事件循环(微任务——宏任务)
问题
-
“进程”和“线程”的区别?
不是。变量(提升)
-
JS是单纯的解释性语言吗?
-
对象变量怎么存?——堆空间
9-TypeScript
贺庆阳
一、为什么TS?
SomeTypeScript
基础知识 TS
(应该是)资源:Playground 在线编译
二、基础知识
-
基础类型:enum、unknown、void;never、tuple元组
-
函数类型:输入、输出、重载
-
interface:接口
-
修饰符:抽象类——只能被继承,不能被实例化
interface,implements
-
TS进阶-高级类型
- 联合类型 |
- 交叉类型 &
- 类型断言
-
泛型:有一个类型解决输入输出可关联的问题
-
- typeof:获取类型
- keyof:获取所有键
- in:遍历枚举类型
- extends:泛型
- T[K]:索引访问