文章目录
什么是箭头函数,有什么特征
使用 "箭头" ( => ) 来定义函数. 箭头函数相当于匿名函数, 并且简化了函数定义
箭头函数的特征:
○ 箭头函数没有this, this指向定义箭头函数所处的外部环境
○ 箭头函数的this永远不会变,call、apply、bind也无法改变
○ 箭头函数只能声明成**匿名函数**,但可以通过表达式的方式让箭头函数具名
○ 箭头函数没有原型prototype
○ 箭头函数不能当做一个构造函数 因为 this 的指向问题
○ 箭头函数没有 arguments 在箭头函数内部访问这个变量访问的是外部环境的arguments, 可以使用 ...代替
如果同时发出两个请求a和b,且a请求的响应较慢,b请求的响应较快,那么最终结果取决于这两个请求是如何处理的?
在单个线程JavaScript中,实际上只能并行执行一个请求。当我们使用异步代码时,JavaScript引擎会先发出a请求,但不会停止等待a请求的响应,而是立即发出b请求并开始等待它的响应。一旦b请求成功完成并返回结果,JavaScript引擎将调用它的回调函数以处理此结果。但是,如果此时a请求仍未返回响应,它的回调函数将仍然等待直到该响应到达为止。
结果是,b请求非常快,因此可以尽快获得结果,而a请求需要更长时间才能完成。因此b请求的结果将首先被处理和渲染到页面上,然后是a请求响应的结果。这可能导致一些页面元素或功能需要等待很长时间才能正常工作,直到具有较慢响应时间的a请求已经完成。
为了避免这种情况,可以考虑一些解决方案,例如使用更高效的服务器、优化所请求资源的大小,或在可能的情况下将多个请求合并为一个。此外,还可以在用户界面上提供一定的反馈信息,告知用户正在处理请求并可能需要等待较长时间。
valueOf
当a=?以下等式成立
if(a==1 && a==2 && a==3){
console.log('success')
}
解:如果等式一边是对象,一边是数值,则调用对象中的valueOf方法取得原始值再比较
let a={
value:1,
valueOf:()=>{
console.log(a.value)
return a.value++
}
}
axios特点: 基于promise封装的HTTP客户端
- 浏览器端发起XMLHttpRequests请求
- node端发起http请求
- 支持Promise API
- 自动转换json数据
- 监听请求和返回
- 对请求和返回进行转化
- 取消请求
- 客户端支持抵御XSRF攻击
浏览器的垃圾回收机制
js具有自动垃圾回收机制,会定期对那些不再使用的变量、对象所占用的内存进行释放,原理就是找到不再使用的变量,然后释放掉其占用的内存。
js中有 局部变量 和 全局变量。全局变量的生命周期会持续到页面卸载;而局部变量声明在函数内,生命周期从函数执行开始,直到函数执行结束,之后局部变量不再使用,所占用的内存就会别释放。如果局部变量使用外部变量,产生闭包,就不会回收。
垃圾回收的方式
引用计数法,标记清除法
如何减少垃圾回收
1、对数组对象进行优化:比如要清空一个数组|对象,可以赋值[] | {} (null)
2、循环中的函数表达式,如果可以复用,尽量放在函数外
内存泄漏
内存泄漏:程序没有释放不再使用的内存
意外的全局变量: 由于使用未声明的变量,而意外的创建了一个全局变量,而使这个变量一直留在内存中无法被回收。
被遗忘的计时器或回调函数: 设置了 setInterval 定时器,而忘记取消它,如果循环函数有对外部变量的引用的话,那么这个变量会被一直留在内存中,而无法被回收。
脱离 DOM 的引用: 获取一个 DOM 元素的引用,而后面这个元素被删除,由于一直保留了对这个元素的引用,所以它也无法被回收。
闭包: 不合理的使用闭包,从而导致某些变量一直被留在内存当中。