什么是闭包?
1. 当一个内部函数被调用,就会形成闭包,闭包就是能够读取其他函数内部变量的函数
定义:闭包是能够读取其他函数内部变量的函数,在js中,只有函数内部的子函数才能读取局部变量,所以闭包一般是一个函数套函数的结构,将子函数返回到外面用一个全局变量存储起来,这就叫闭包。
特点:①函数套函数,返回子函数。
②返回的子函数存在一个全局变量中。
③执行外层函数后,该函数的局部变量会被存储在堆中,不会被垃圾回收机制回收。
优点:①防止变量被污染
②可以保存私有变量
缺点:会造成内存泄漏
函数中用var定义的变量在该函数运行完即被销毁。而在闭包中,内层函数调用了外层函数的局部变量,并且返回给外面的全局变量,该局部变量会被存储起来。因为外层函数返回的是一个函数(返回了内层函数),函数就是一个对象,所以该局部变量被保存到了堆中,即使将接收的那个全局变量设置为null,也不会将该局部变量销毁,这样就保存了外层函数的私有变量了,同时也可能会造成内存泄漏。
Promise 的作用?
promise 是一个异步加载的方式, 处理时使用 new Promise返回一个对象, 该对象可以调用then方法, then方法中有两个参数,第一个参数是加在成功后时执行的, 第二个参数是加载失败时执行的, then方法中可以通过Promise进行链式调用
1当一个内部函数被调用,就会形成闭包,闭包就是能够读取其他函数内部变量的函数