js的基本知识:
1:slice和splice的区别?
都是对数组进行操作,但是slice不会对原数组进行改变,splice会对原数组进行改变.slice截取数组的一部分数据,splice可以对数组进行增删改操作
2:map,reduce,filter,foreach.find区别
map和filter会产生一个新的数组,filter是进行筛选,map是对数据进行操作,需要return,reduce是轮询数组中的所有数据,返回一个总和,foreach和map目的一致,都是循环数组,对数组进行操作,只是foreach会对原数组中的数据进行更改,find则是返回第一个元素
3:indexof的作用:
indexof是用在字符串上的一个操作,用来反馈出字符在字符串上的第一个显示的位置
4:闭包的概念和特点:
闭包就是函数中又包含了一个新的函数,此时,里面的这个函数叫做闭包,外边的这个函数称之为高级函数,在使用闭包时,闭包会先查找自身内部的变量,查找不到则查找外部的变量.外部的变量不会随着函数得到使用完毕而校徽,而是会一直保存在内存当中
5:v说出你对var的理解:
var不被块级所限制,且存在变量提升,即在自己的作用域最前面默认加上var a定义.当前面既没有var a定义,且直接a=1进行赋值的一律绑定在window上
6:var let const的区别
let和const同属于块级作用域名,const为常量,let为变量,var挂载在window上,let和var存储在内存中
7:纯函数是什么意思
函数在参数相同的情况之下,无论在哪一个场合使用返回的都是相同的数,就为纯函数
8:evenloop事件循环(异步函数的底层实现)
js为单线程的语言,存在任务队列和异步队列,当出现异步任务的时候,就将异步任务存放到异步队列上,同步任务直接存放在任务队列上,当任务队列上的任务全部执行完毕之后,就会将异步队列的任务取出到任务队列上进行执行.每次的循环称之为evenloop事件循环
9:宏任务和为微任务的触发顺序和各自代表的任务事件
任务的触发顺序为 同步任务->微任务->宏任务 微任务的代表事件:nextTick,promie,thrn() 宏任务代表事件setTimeout setInterval
10:赋值,浅拷贝和深拷贝的区别
赋值如果指向对象,则两个变量同时共享一个堆对象,浅复制:变量独立,对象共享(,,,实现浅赋值),深复制:全部独立
11:简单说明一下节流和防抖
节流是指在最后一个动作触发的一段事件内产生某种回调,当动作重复执行覆盖,则会重新计时.防抖是指在一段时间内只触发一次事件
12:说一下call apply bind的区别
bind是返回一个新的函数.此函数永久绑定band所新指向的this,call和apply只是在,call在传递参数的时候必须一个个列举出来,而apply可以用数组的方式展现出来
13:sort函数的背后原理
按照unicode方式进行排序把编发
14:在js中this指向问题
在普通函数中,this指向一定是指向window,在严格模式下,指向的是undefind(react),在类的对象中,谁使用这个函数,则this指向这一个对象,在点击事件中this指向的是dom元素
15:说出你对原型和原型链的理解
首先只有函数有原型对象,对象中有_proto_.函数在js中既是对象又是函数,在本身属性找不到的情况之下,对象会通过_proto_去指向创造其的构造函数中的原型对象,在这个原型对象中寻找属性.如果还是找不到就一直往上寻找,此就是原型链.原型链的产生是因为js之父觉得js对象之间不能实现继承,但又不想向java那样的强类型语言,所以创造了_proto_出来.函数的proto指向Function 对象指向Object,最终的指向是null
16: 出现相同变量名时,变量使用的优先级
变量>函数>提升
17:typeOf和instanceof区别
typeof是对元素的类型进行判断,有function,object,string,number,boolean,undefined,注意的是typeof在判断null、array、object判断的时候都是object,所以instanceof是对两个对象之间进行判断,如果第二个对象存在于第一个对象的原型链中,则返回true
18:promise解决了什么问题.其中的方法有什么,分别用在什么地方:
promise解决了回调地狱的问题,就是将横向的请求转换成纵向的请求,使代码更加美观易懂,其中的方法有then,catch,all方法,在回调结束并成功的情况下回调then,catch抓取错误,只需要在then的最后一层添加不管那一次promise错误都会跳入这个方法,all方法不管怎么样都要执行,在promise内部,成功执行进入resolve,错误执行进入reject方法,注意的是axios封装lpromise语法,我们直接返回axios可以直接使用会promise带来的便携