千锋教育web前端高频面试题视频教程,kerwin大话前端面试秘籍(附答案)

P6 JS高频面试题
1、原型链
理解:如果一个对象obj,想要访问一个属性,比如这个属性的名字a,那么obj.a,他会先找对象本身有没有这个属性,如果没有,会先通过__protop__来找到创建对象的构造函数,再找到它的原型上面有没有a属性,如果没有还会继续沿着上一级往上找,直到找到原型的顶点Object,没有则返回Null。
2、闭包
含义:当A函数中返回了B函数,并且返回的B函数中有使用到A函数中的局部变量(包含参数)就会形成一个特性的形态,就叫闭包
1) 内存泄漏:A函数执行完成后,生成了B函数,应该被垃圾回收机制回收,但是因为生成的B函数还在使用A函数中的局部变量,就会导致A函数没有及时回收,导致内存泄漏.
2) 防抖:在一定时间内,进行重复多次操作,只会进行最后一次操作,避免事件的重复触发
3) 节流:在一定时间内的多次重复操作,只会进行第一次操作,,一段时间后才会可以进行下一次操作。
3、数组合并方法
1)concat
2) […a,…b]展开运算符
3)[a,b].flat() 扁平化处理
4、cookie 和session
1)Cookie和session是为HTTP请求挂载状态的,也就说在前后端交互的过程中,往往需要利用cookie或者session来对客户端进行标记
2)Cookie和session本质都是利用cookie或者localStorage来进行数据交互,而cookie和localStorage又都有跨域的限制:
Cookie通过设置domain可以实现一级域名下的二级域名之间可以相互访问,localStorage则不能跨域。
5、进程和线程的区别
1)进程是资源分配的最小单元,线程是代码执行的最小单元。
2)一个应用程序可能会开启多个进程,进程之间数据不共享,一个进程内部可以开启多个线程,线程之间数据可以共享,所以多线程的情况下,往往要考虑的是线程之间的执行顺序问题
3)浏览器也可以通过webWorkers开启多线程
6、协商缓存和强缓存的区别
1)协商缓存和强缓存指的都是浏览器对静态资源文件的缓存机制
2)强缓存是客户端直接查看本地的缓存文件是否过期,没有则直接取用
3)强缓存在前,协商缓存在后
4)资源未过期触发强制缓存,资源过期后再触发协商缓存
5)判断过期方法expires(绝对时间)、cache-control(相对时间)