[第8、9课-深入浅出JS、TypeScript|青训营笔记]

56 阅读2分钟

8-深入浅出JS

一、简析与代码示例

  1. JS是单线程

  2. 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)
    //strstrstr
    

    push

    const arr = [1,2]
    arr.push(3)
    //[1,2,3]
    
  3. 作用域

    1. 全局作用域
    2. 函数作用域
    3. 块级作用域(只自己在块内使用)
  4. 变量提升

    console.log(company)
    var company="ByteDance"
    //undefined
    

    程序先扫一遍代码,看到var company会提到最前,相当于:

    var company
    console.log(company)
    var company="ByteDance"
    //undefined
    
    func()
    var func = showName
    function showName(){...}
    // 报错,因为func不会被提提升,是undefined
    

二、JS如何执行

源——(词法)——>AST——>字节码——(编译)——>机器码(好像)

源<——(语法)——AST 字节码——(解析)——>机器码

  1. 执行上下文

      1. 变量环境

        1. outer
      2. 词法环境

      3. this

        1. 打印都是globa
    1. (不知取什么名字)

      1. 全面——每个生命周期只有一份
      2. 函数
      3. Eva
  2. (往回找变量)函数——>全局

  3. 类与闭包

三、进阶知识

  1. 垃圾回收

    1. 标记(相?)等(会停顿,耗时)
    2. 空间整理
  2. 事件循环(微任务——宏任务)

问题

  1. “进程”和“线程”的区别?

    不是。变量(提升)

  2. JS是单纯的解释性语言吗?

  3. 对象变量怎么存?——堆空间

9-TypeScript

贺庆阳

一、为什么TS?

SomeTypeScript

基础知识 TS

(应该是)资源:Playground 在线编译

二、基础知识

  1. 基础类型:enum、unknown、void;never、tuple元组

  2. 函数类型:输入、输出、重载

  3. interface:接口

  4. 修饰符:抽象类——只能被继承,不能被实例化

    interface,implements

  5. TS进阶-高级类型

    1. 联合类型 |
    2. 交叉类型 &
    3. 类型断言
  6. 泛型:有一个类型解决输入输出可关联的问题

    1. typeof:获取类型
    2. keyof:获取所有键
    3. in:遍历枚举类型
    4. extends:泛型
    5. T[K]:索引访问