前端面试1-15

说一说JS变量提升?

函数和var声明的变量会有变量提升,js在预编译阶段会将函数和var声明的变量提升至最前面先执行,之后再按顺序执行代码块进行赋值,而let和const声明的变量只是创建提升,在预编译中将其创建,形成暂时性死区,不能提前访问和调用变量,只能在赋值之后进行调用和访问

说一说this指向(普通函数、箭头函数)?

this当在普通函数调用时,如果处于非严格模式之中将会是指向window、如果是严格模式将会是指向undefined。 在对象之中调用,将会是指向当前的对象。通过new创建出来的对象将会是指向当前的新对象 如果是使用call、bind、apply修改了指向,将会指向绑定后的this 在箭头函数之中将会指向函数的外层执行上下文,当函数定义之后将会确定当前的this。继承了上一层执行环境的this

说一说call apply bind的作用和区别?

三者功能一致,改变函数体内的this指向
call、apply可以立即执行,bind不会立即执行,会返回一个函数 需要加入括号才会调用
apply的第二个参数是数组,call和bind有多个参数需要挨个写
说一说js继承的方法和优缺点?

1、原型链继承-缺点:父类的引用类型数据被所有子类共享,更改一个子类的数据,其他数据会受到影响,一起改变;子类实例不能向父类构造函数传参。2、借用构造函数的继承-优点:父类的引用类型数据不会被子类共享。缺点:子类不能访问父类原型属性的上的方法和参数。3、组合继承-优点:父类可以复用,父类构造函数中的引用类型数据不会被共享。缺点:会调用两次父类的构造函数,会有两份一样的属性和方***影响性能。4、寄生组合继承(目前推荐的最优的方法之一)-优点:解决组合继承调用两次父类构造函数的缺点。5、class继承extends,也是目前推荐的最优方法之一。

说一说new会发生什么?

看下new的实现代码就知道有以下四步:1. 创建一个新对象 2. 将新对象的__proto__(原型)指向构造函数的prototype(原型对象)3. 构造函数绑定新对象的this并执行返回结果 4. 判断返回结果是否为null,如果为null,返回新对象,否则直接返回执行结果。

说一说defer和async区别?

html文件都是按顺序执行的,script标签中没有加defer和async时,浏览器在解析文档时遇到script标签就会停止解析阻塞文档解析,先加载JS文件,加载完之后立即执行,执行完毕后才能继续解析文档。 而在script标签中写入defer或者async时,就会使JS文件异步加载,即html执行到script标签时,JS加载和文档解析同时进行,而async是在JS加载完成后立即执行JS脚本,阻塞文档解析,而defer则是JS加载完成后,在文档解析完成后执行JS脚本

说一说promise是什么与使用方法?

说一说JS实现异步的方法?

回调函数、事件监听、setTimeout(定时器)、Promise、async/await,generator生成器

说一说cookie sessionStorage localStorage 区别?

共同点:都是存储在浏览器本地; 不同: 1.cookie 服务器端写入; S,L 由前端写入; 生命周期 2.cookie由服务器端在写入的时候就设置好的;L写入就一直存在,除非手动清除;S 页面关闭就自动清除; 存储大小 3.cookie最小,4kb; S,L大约5M; 数据共享 4.数据共享都遵循同源原则,S还限制必须是同一个页面;前端向后端发送请求的时候会自动携带Cookie中的数据; 应用场景 5.Cookie一般用于存储登录验证信息SessionID或者token; L存储不易变动的数据,减轻服务器的压力;S可以用来检测用户是否是刷新进入 页面

说一说如何实现可过期的localstorage数据?

一种是惰性删除:惰性删除是指获取数据的时候,拿到存储的时间和当前时间做对比,如果超过过期时间就清除Cookie。 另一种是定时删除:每隔一段时间执行一次删除操作,并通过限制删除操作执行的次数和频率,来减少删除操作对CPU的长期占用。 LocalStorage清空应用场景:token存储在LocalStorage中,要清空

说一下token 能放在cookie中吗?

1.实现上是可以的,功能上不推荐,容易产生csrf问题
2.token一般存储在sessionStorage/localStorage里面。token的出现就是为了解决用户登录后的鉴权问题,如果采用cookie+session的鉴权方式,则无法有效地防止CSRF攻击,同时,如果服务端采用负载均衡策略进行分布式架构,session也会存在一致性问题,需要额外的开销维护session一致性。

说一说axios的拦截器原理及应用?

axios拦截器分为响应和请求拦截器,请求拦截器 在请求发送前进行必要操作处理,例如添加统一cookie、请求体加验证、设置请求头等,相当于是对每个接口里相同操作的一个封装; 响应拦截器 同理,响应拦截器也是如此功能,只是在请求得到响应之后,对响应体的一些处理,通常是数据统一处理等,也常来判断登录失效等。

说一说创建ajax过程?

(1)创建异步对象,即 XMLHttpRequest 对象。 (2)使用 open 方法设置请求参数。open(method, url, async)。参数解释:请求的方法、请求的 url、是否异步。第三个参数如果不写,则默认为 true。 (3)发送请求:send()。 (4)注册事件:注册 onreadystatechange 事件,状态改变时就会调用。如果要在数据完整请求回来的时候才调用,我们需要手动写一些判断的逻辑。 (5)服务端响应,获取返回的数据。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值