JS基础
javascript内置类型都有哪些?
值类型:string,number,boolean,null,undefind
引用类型:object(function,array......)
javascript中“==”和“===”的区别?
==在比较之前如果两边的值类型不同会进行类型转换之后在进行比较
===比较严格 当类型不相等的时候直接返回false
vue响应式原理?
vue会把data里面的所有属性遍历一遍,并通过Object.defineProperty把这些属性转换为setter个getter,在数据进行改变的时候就会触发setter来通知数据变更,然后每个组件都会有一个wacther实例,他会在组件进行渲染的时候把所有接触过的属性记录为依赖,当这些依赖项的setter被触发的时候就会通知wacther,从而使他对应的组件重新渲染
说一下vue单向数据流是什么?
单向数据流指的是数据只能从父组件向子组件进行传递,子组件不能直接改变props,如果想改变只能通过事件触发的方式在父组件中进行修改
promise的出现是为了什么?
promise的出现是为了解决回调地狱,传统的ajax请求通过callback的形式返回数据,当请求有多个的时候就会一层嵌套一层的进行请求的调用,而promise的出现可以使你的请求变得更优雅:’)
promise的状态有几种?分别是什么?
一共有三种状态,等待态,成功态,失败态
promise的api都什么?
all,race,then,catch,finally
promise.all的实现原理是什么?
首先接收一个promise数组为参数,通过for循环发送请求这些请求,在每一个请求返回数据的时候记录一下返回数据的接口的数量,当这个数量等于接收到参数的数组的数量的时候,在返回所有数据
请写出以下代码运行结果
var a={n:1}
var b=a
a.x=a={n:2}
console.log(a.x) //undefined
console.log(b.x) //{n:2}
考点:连续赋值的运行顺序
题解:
//代码会这样执行
var a={n:1}
var b=a //a和b指向同一个内存地址,所以在a的属性改变时b的属性也会改变
//*连续赋值会从左往右开始赋值
a.x={n:2} //这时b的x也会跟着改变
a={n:2} //a被重新指向到了{n:2}
//所以这是a={n:2},b={n:1,x:{n:2}}
console.log(a.x) //undefined
console.log(b.x) //{n:2}
请把两个数组[‘A1’,‘A2’,‘B1’,‘B2’,‘C1’,‘C2’]和[‘a’,‘b’,‘c’]合并成[‘A1’,‘A2’,‘A’,‘B1’,‘B2’,‘B’,‘C1’,‘C1’,‘C’]
let a=['A1','A2','B1','B2','C1','C2']
let b=['A','B','C']
//首先合并数组,然后进行排序
let x=[...a,...b].sort((c,p)=>{
return c.charCodeAt(0)-p.charCodeAt(0)//先按第一个字母排序
||p.length- c.length//再按字符串的长度排序
||c.charCodeAt(0)-p.charCodeAt(0)//再按每个字符串第二个字符排序
})
说一下vue封装组件的思想
高内聚
- props
- events
- slots
- methods
低耦合
尽量让组件的颗粒度小,最大限度的让组件复用