apply call bind&& 闭包
call: function.call(thisArg,params1,params2,...)
apply:function.apply(thisArg,[params1,params2,...])
bind: function.bind(thisArg,params1,params2,...)
call和apply传参的方式不同
bind不是立即执行,call和apply是立即执行
闭包:指有权访问另外一个函数作用域中的变量的函数,闭包可以让你可以在一个内层函数中访问到外层函数的作用域
闭包的表现形式:
1.返回一个函数,返回的函数可以调用外部函数中定义的变量
2.在定时器,事件监听,AJAX请求,web websocket或者任何异步,只要使用了回调函数,实际上就是使用闭包
3.作为函数参数传参传递的形式
4.IIFE创建闭包
闭包的缺点:
闭包使用变量会保存在内存中,不会立即释放,所以大量使用闭包会导致消耗内存,导致页面性能变差