1.闭包的理解,优点缺点,应用场景
闭包:一个函数及其周围引用状态组成的集合
特点:在一个函数中调用另一个函数
优点:
①可以实现Promise的封装和ajax的实现
②有利于前后端分离
③利于开发出回调函数,提高了代码的简洁度
④防抖和节流的出现解决了性能浪费的问题
缺点:
①出现回调地域的问题,回调无法停止,导致死机
②外部无法访问闭包里面的数据,闭环问题
应用场景:
①延长变量生命周期
②回调函数中
③防抖,节流
④ajax请求
2.事件循环的理解,以及应用理解
理解:Js是单线程的,所以分为了主线程和任务队列,当主线程的任务执行完,才会去任务队列去读取异步任务,将异步任务推入主线程,这个过程不断重复就是事件循环。
读取异步任务时先读取宏任务的同步任务,再读取微任务的同步任务,在读取微任务的异步任务最后在读取宏任务的异步任务
所以说在一定情况下是微任务先执行的也是对的
宏任务:定时器等
3.js类型检验的方式
1. typeof
判断
typeof
返回的类型都是字符串形式
2. Constructor
实例constructor
属性指向构造函数本身
constructor
判断方法跟instanceof
相似,但是constructor
检测Object
与instanceof
不一样,constructor
还可以处理基本数据类型的检测,不仅仅是对象类型
3. Instanceof
instanceof
可以判类型是否是实例的构造函数
instanceof
后面一定要是对象类型,并且大小写不能错,该方法适合一些条件选择或分支。
4. Object.prototype.toString.call()
判断类型的原型对象是否在某个对象的原型链上
5. 通过object
原型上的方法判断
比如array.isArray()
来判断是不是一个数组
6. ===(严格运算符)
通常出现在我们的条件判断中,用来判断数据类型的话就会非常的有局限性,比如判断一个变量是否为空,变量是否为数据等