笔记

40 阅读9分钟

一.css3有那些新属性?

border-radius:圆角边框

box-shadow:盒子阴影

background-size:背景图片大小

transition:过渡

transform:转换(位移 旋转 缩放)

animation:动画

linear-gradient:线性渐变

box-sizing:css3 盒子模型

二. git的核心概念有哪些?

工作区(workspace) git,add 提交到 暂存区(index) git commit -m “” 提交到 repositor(本地仓库) git push 提交到 远程仓库(remote)

通过 pull 拉去代码

三. git 中与分支相关的操作都有哪些?

git branch 查看本地所有分支 git branch -r 查看远程所有分支 git branch -a 查看本地和远程所有分支 git merge <分支名> 合并分支 git merge --abort 合并分支出现冲突时,取消合并,一切回到合并前的状态 git branch <新分支名> 基于当前分支,新建一个分支 git checkout --orphan <新分支名> 新建一个空分支(会保留之前分支的所有文件) git branch -D <分支名> 删除本地某个分支 git push <远程库名> :<分支名> 删除远程某个分支 git branch <新分支名称> <提交 ID> 从提交历史恢复某个删掉的某个分支 git branch -m <原分支名> <新分支名> 分支更名 git checkout <分支名> 切换到本地某个分支 git checkout <远程库名>/<分支名> 切换到线上某个分支 git checkout -b <新分支名> 把基于当前分支新建分支,并切换为这个分支

四。标准盒模型和IE怪异和模型有什么区别? 标准盒模型 盒子总宽度 = width + padding + border + margin;

盒子总高度 = height + padding + border + margin

怪异盒模型

  • 盒子总宽度 = width + margin;
  • 盒子总高度 = height + margin;

五,event loop 时间循环如何理解? 同步任务:立即执行的任务,同步任务一般会直接进入到主线程中执行

异步任务:异步执行的任务,比如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)

(遇到同步任务先执行同步任务,让后再执行异步任务,异步任务又分为宏任务和微任务,限执行微任务,再执行宏任务)

六,数组方法有那些(写出几个es5的方法),什么意思 遍历方法 map : 映射数组,得到一个映射之后的新数组 filter:筛选数组 forEach:遍历数组 some:判断数组是否有元素满足条件(相当于逻辑或:一真则真,全假为假) every:判断数组是否所有满足都满足条件(相当于逻辑与:一假则假,全真为真) findIndex:查找元素下标,一般用于元素是引用类型 reduce:给数组每一个元素执行一次回调,一般用于数组元素求和(也可以求最大值、最小值) 增删改查方法 push() : 末尾新增元素,返回值是新数组长度 unshift():开头新增元素,返回值是新数组长度 pop() :末尾删除元素,返回值是删除的那个末尾元素 shift(): 开头删除元素,返回值是开头的那个末尾元素 splice() : 删除指定下标元素,第三个参数是一个剩余参数,可以在删除的元素后面插入元素 其他方法 reverse:翻转数组,会修改数组自身 sort: 数组排序,会修改数组自身 json: 拼接数组元素,返回值是拼接之后的字符串 slice: 根据下标范围查询数组元素,返回值是查询后的新数组 indexOf: 查询元素下标,一般用于元素是值类型

(字符串常用的方法)

indexOf: 查询某个字符下标,一般用于判断字符串中是否包含某些字符 split: 切割字符串,返回值是切割后的新数组 substring: 截取字符串,返回值是截取后的字符串 replace: 替换字符串,返回值是替换后的新字符串 toLowerCase : 转小写 toUpperCase : 转大写

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

将一个数组转为用逗号分隔的参数序列 , 主要用于函数调用的时候,将一个数组变为参数序列

rest

rest用来获取已经定义的参数之外的所有参数

当我们不知道函数的实参有多少的时候 可以使用rest

在最后一个形参的位置 通过 ...rest(rest可以替换,但位置必须是最后一位)来获取实参

八,es6新增数据结构Set,Map代表什么意思?利用期中一 种实现数组去重?Set是一种叫做集合的数据结构,Map是一种叫做字典的数据结构

什么是集合?什么又是字典?

集合 是由一堆无序的、相关联的,且不重复的内存结构【数学中称为元素】组成的组合

字典 是一些元素的集合。每个元素有一个称作key 的域,不同元素的key 各不相同

Set 类似于数组,但是成员的值都是唯一的,没有重复的值,我们一般称为集合

Set本身是一个构造函数,用来生成 Set 数据结构

Set的实例关于增删改查的方法:

add() 添加某个值,返回 Set 结构本身

delete() 删除某个值,返回一个布尔值,表示删除是否成功

has() 返回一个布尔值,判断该值是否为Set的成员

clear() 清除所有成员,没有返回值

Map

Map类型是键值对的有序列表,而键和值都可以是任意类型

Map本身是一个构造函数,用来生成 Map 数据结构

Map 结构的实例针对增删改查有以下属性和操作方法:

size size属性返回 Map 结构的成员总数。 set() 设置键名key对应的键值为value,然后返回整个 Map 结构 get() get方法读取key对应的键值,如果找不到key,返回undefined has() has方法返回一个布尔值,表示某个键是否在当前 Map 对象之中 delete() delete方法删除某个键,返回true。如果删除失败,返回false clear() clear方法清除所有成员,没有返回值

let arr = [1,1,1,2,3,4,4,5,6] let arr2 = new Set(arr) console.log(arr2) //[1,2,3,4,5,6]

九,说下你理解的Promise?用promise封装一个网络 请求,核心代码?promise 相当于一存放异步操作的容器 ,他本身并不是异步的 ,是异步编程的一种解决方案, 可以获取异步操作的信息,很好的避免了地狱回调,比传统的解决方案回调函数和事件更合理更强大。

promise 的三种状态改变

pending 变为 resolved pending 变为 rejected 只有这两种 且一个 promise 对象只能改变一次无论成功还是失败,都会有个结果

promise 是 es6 提供的一种异步解决方案,在我的理解中 promise 就是把异步操作换了一种写法 从之前的嵌套回调函数 变成了链式的写法 promise 本身其实就是一个容器 里面放异步的代码 这样就可以让这个异步的代码执行.then .catch 的操作 1.1 说⼀下你对 promise 的理解?(必问) promise 是 es6 提供的一种异步解决方案,在我的理解中 promise 就是把异步操作换了一种写法 从之前的嵌套回调函数 变成了链式的写法 1.2 什么是 promise?通过 promise 能够解决什么问题? promise 是 es6 提供的一种异步解决方案, promise 可以解决回调地狱的问题 回调地狱就是拿到 a 接口的数据后才能根据 a 返回的数据请求 b 接口 这样回调函数嵌套回调函数的写法就叫回调地狱 这种写法会让代码臃肿 并且后期难以维护 除了 promise 之外 async 是解决回调地狱的最终方案 1.3 说⼀下 promise 的特点?也就是三种状态? promise ⼀共有三个状态,分别是进⾏中,成功或者失败 如何成功的话可以通过 resolve ⽅法将正确结 果返回出去,通过.then 的⽅式进⾏接受,失败的话可以通过 reject 的⽅式将失败的结果返回出去,通 过.catch 的⽅式进⾏接受,pending 状态是进⾏中,⼀旦进⾏之后,他的状态是不可逆的 1.4 说⼀下 promise 怎么⽤? 如果要使⽤ promise,我们需要对 promise 进⾏实例化,在实例化的构造函数⾥⾯有⼀个回调函数,这个 回调函数⾥⾯有两个参数,分别是 resolve 和 reject,我们可以通过 promise 的实例化对象调⽤.then 或 者.catch ⽅式接受结果 1.5 我们之前遇到的哪些东西本身就是一个 promise 对象? jq 的 ajax 请求本身就是一个 promise 对象 所以可以直接用.then axios 也是一个 promise 对象 原生的 ajax 以及 小程序的 wx.request 请求都不是 promise 对象 不能用。then 的写法,如果想用链式写法 就要自己封装一个 promise 1.6. promise 的 all 和 race 方法 promise 还给我们提供了.all 和 race, 其中 all ⽅法的作⽤是将多个请求合并成⼀个请求, ⽐如当⾸⻚ 要请求 10 个接⼝,我们可以 promise.all 进⾏合并,.race 的作⽤也可以将多个请求合并成⼀个请求,不过 是谁先请求成功就先返回谁.

十,说一下es6 导入导出如何使用

默认导出和导入
    默认导出的语法: export default {默认导出的成员}

    默认导入的语法: import 变量名称 from '模块路径'