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

JS高频面试题:
1.介绍JS有哪些内置对象?
数据封装类对象:Object、Array、Boolean、Number、String
其他对象:Function、Arguments、Math、Date、RegExp、Error
ES6新增对象:Symbol(标识唯一性的ID)、Map、Set、Promise、Proxy、Reflect
2.如何最小化重绘和回流?
需要对元素进行复杂的操作时,可以先隐藏,操作完成后再展示
需要创建多个dom节点时,使用DomcumentFragment创建完成后一次性的加入document
缓存Layout属性值,如:var left = elem.offsetLeft;这样,多次使用left只产生一次回流
尽量避免用table布局(table元素一旦触发回流就会导致table里所有的其他元素回流)
3.JS的作用链域?
全局函数无法查看局部函数的内部细节,但局部函数可以查看其上层的函数细节,直至全局细节
如果当前作用域没有找到属性或方法,会向上层作用域查找,直至全局函数,这种形式就是作用域
4.数据请求
(1)xhr
==>var xhr = new XMLHttpRequest()
xhr.open('get','www.aaaa.com',true)//异步
xhr.send()
xhr.onreadystatechange = function(){
//readstate 4
//status 200-300
//200 成功
//300 302 Redirect
//304 从缓存读取数据
//404 not found
//500 服务器错误
}
xhr可以通过xhr.abort()方法取消,终止请求
(2)fetch(w3c)
fetch('url',
{method:'post',body:'',credencial:'include'})
.then(res=>res.json())
.then(res=>{console.log(res)})
//兼容性问题
//发送的请求,默认是不带cookie。 credencial:'include'
(3)jsonp(解决跨域)
动态创建script src指向没有跨域限制 onload
后端返回的数据格式一定是 test('['111','222','333']')
前端提前定义好test这个方法,通过形参拿到数据
jsonp可以做get请求,无法做post请求(缺点)
jsonp不可以取消
5.跨域和同源策略
所谓的同源策略其实是浏览器的一种机制,只允许同源,也就是同协议、同域名、同端口的情况下才能进行数据交互。但是我们在开发项目的过程中,往往一个项目的接口不止一个域,所以往往就需要做跨域的处理,通常的跨域方式有:
(1)JSONP,主要依赖的是script标签不受同源策略影响,src指向某一个接口的地址,同步需要传递callback回调函数名字,这样当接口调用成功后,本地创建的全乎回调函数就会执行,并且接收到数据,不适用img标签的原因是因为img标签无法执行js语句
(2)CORS,依赖服务器对前端的请求头信息进行放行,不做限制
Access—Control-Allow-Origin配置成*
(3)代理访问,前段访问不存在的跨域问题的代理服务器,代理服务器再去访问目标服务器(服务器之间没有跨域问题)