2.10 课堂总结

79 阅读6分钟

1、 css3有哪些新特性:

常见的如下:

  • border-radius:圆角边框
  • box-shadow:盒子阴影
  • background-size:背景图片大小
  • transition:过渡
  • transform:转换(位移 旋转 缩放)
  • animation:动画
  • linear-gradient:线性渐变
  • box-sizing:css3 盒子模型

2、 git的核心概念有哪些

  • 工作区(Workspace)是电脑中实际的目录。
  • 暂存区(Index)类似于缓存区域,临时保存你的改动。
  • 仓库区(Repository),分为本地仓库和远程仓库。

3、 git中与分支有关的操作

本地分支
  • 查看本地分支:git branch
  • 创建本地分支:git branch lizhihui
  • 删除本地分支:git branch -d lizhihui
  • 切换分支:git checkout lizhihui
  • 合并分支: git merge master
远程分支
  • 推送到远程分支(创建远程分支dev):git push origin master:dev
  • 查看所有分支:git branch -a
  • 删除远程分支:git push origin :dev (推送一个空分支到远程分支,相当于删除远程分支)
  • 删除远程分支:git push origin --delete dev

标准盒模型和IE盒模型(怪异盒模型)的区别

  • 盒子模型组成有 4 部分,分别为:内容 内边距 外边距(一般不计入盒子实际宽度) 边框
  • 盒子模型有 2 种:标准盒子模型与怪异盒子模型
  • 标准盒子模型=content(内容)+border(边框)+padding(内边距)
  • 怪异盒子模型=content(内容)(已经包含了 padding 和 border)
  • css3 种可以通过设置 box-sizing 属性来完成标准或许怪异盒子模型之间的切换,怪异盒子模型:box-sizing: border-box;标准盒子模型:box-sizing:content-box

event loop事件循环如何理解

⾸先, JavaScript 是⼀⻔单线程的语⾔,意味着同⼀时间内只能做⼀件事,但是这并不意味着

单线程就是阻塞,⽽实现单线程⾮阻塞的⽅法就是事件循环

在 JavaScript 中,所有的任务都可以分为
  • 同步任务:⽴即执⾏的任务,同步任务⼀般会直接进⼊到主线程中执⾏

  • 异步任务:异步执⾏的任务,⽐如 ajax ⽹络请求, setTimeout 定时函数等

微任务

⼀个需要异步执⾏的函数,执⾏时机是在主函数执⾏结束之后、当前宏任务结束之前

常⻅的微任务有:

  • Promise.then

  • MutaionObserver

  • Object.observe(已废弃;Proxy 对象替代)

  • process.nextTick(Node.js)

宏任务

宏任务的时间粒度⽐较⼤,执⾏的时间间隔是不能精确控制的,对⼀些⾼实时性的需求就不太符合

常⻅的宏任务有:

  • script (可以理解为外层同步代码)

  • setTimeout/setInterval

  • UI rendering/UI事件

  • postMessage、MessageChannel

  • setImmediate、I/O(Node.js)

    执行的顺序是先执行同步然后是异步中的微任务最后是宏任务

数组的方法有哪些

数组的方法有很多,大概分为以下几类

  • 遍历方法

    • map : 映射数组,得到一个映射之后的新数组
    • filter:筛选数组
    • forEach:遍历数组
    • some:判断数组是否有元素满足条件(相当于逻辑或:一真则真,全假为假)
    • every:判断数组是否所有满足都满足条件(相当于逻辑与:一假则假,全真为真)
    • findIndex:查找元素下标,一般用于元素是引用类型
    • reduce:给数组每一个元素执行一次回调,一般用于数组元素求和(也可以求最大值、最小值)
  • 增删改查方法

    • push() : 末尾新增元素,返回值是新数组长度
    • unshift():开头新增元素,返回值是新数组长度
    • pop() :末尾删除元素,返回值是删除的那个末尾元素
    • shift(): 开头删除元素,返回值是开头的那个末尾元素
    • splice() : 删除指定下标元素,第三个参数是一个剩余参数,可以在删除的元素后面插入元素
  • 其他方法

    • reverse:翻转数组,会修改数组自身
    • sort: 数组排序,会修改数组自身
    • json: 拼接数组元素,返回值是拼接之后的字符串
    • slice: 根据下标范围查询数组元素,返回值是查询后的新数组
    • indexOf: 查询元素下标,一般用于元素是值类型

7、 扩展运算符与rest剩余运算符什么意思?应用场景

扩展运算符的意思就是把外皮拨开,获取里面的数据,而剩余运算符是把数据收集在一起

8、 es6中新增数据结构Set、Map代表什么意思?利用其中哪一种可以实现数组的去重

Set数据结构中不能有重复的元素,可以实现数组去重

Map数据结构中的keys可以是任意数据类型

9、 Promise是什么

Promise ,译为承诺,是异步编程的⼀种解决⽅案,⽐传统的解决⽅案(回调函数)更加合理和

更加强⼤

状态

promise 对象仅有三种状态
  • pending (进⾏中)

  • fulfilled (已成功)

  • rejected (已失败)

Promise 构造函数接受⼀个函数作为参数,该函数的两个参数分别是 resolve 和 reject

resolve 函数的作⽤是,将 Promise 对象的状态从“未完成”变为“成功”

reject 函数的作⽤是,将 Promise 对象的状态从“未完成”变为“失败”

特点

对象的状态不受外界影响,只有异步操作的结果,可以决定当前是哪⼀种状态

⼀旦状态改变(从 pending 变为 fulfilled 和从 pending 变为 rejected ),就不会再变,

任何时候都可以得到这个结果

promis本身是同步的,可以把它看作一个存放异步代码的盒子

promise可以解决回调地狱的问题

当我们的请求成功后,我们可以通过promise的resolve把成功的结果返回出去,通过.then来接受,而当失败后可以通过reject把失败的结果返回出去,通过.catch接受

实例上的⽅法
Promise 构建出来的实例存在以下⽅法:
  • then()

  • catch()

  • finally()

then()

then 是实例状态发⽣改变时的回调函数,第⼀个参数是 resolved 状态的回调函数,第⼆个参数

是 rejected 状态的回调函数

catch

catch() ⽅法是 .then(null, rejection) 或 .then(undefined, rejection) 的别名,⽤于指

定发⽣错误时的回调函数

finally()

finally() ⽅法⽤于指定不管 Promise 对象最后状态如何,都会执⾏的操作

构造函数⽅法

Promise 构造函数存在以下⽅法:

  • all()

  • race()

  • allSettled()

  • resolve()

  • reject()

  • try()

all()

Promise.all() ⽅法⽤于将多个 Promise 实例,包装成⼀个新的 Promise 实例

race()

Promise.race() ⽅法同样是将多个 Promise 实例,包装成⼀个新的 Promise 实例

allSettled()

Promise.allSettled() ⽅法接受⼀组 Promise 实例作为参数,包装成⼀个新的 Promise 实例

resolve()

将现有对象转为 Promise 对象

reject()

Promise.reject(reason) ⽅法也会返回⼀个新的 Promise 实例,该实例的状态为 rejected

10、es6的导入导出

在es6中我们可以通过export把文件导出,通过import把文件导入