前端面试
1,call apply bind区别
都是改变this的指向方法, bind()返回的仍是个函数需要以函数形式在调用一遍, call()和apply()可直接调用区别就是call传参需要一一对应即可,apply传参数是需要传数组,同样bind()传参一一对应即可
2.闭包的理解
闭包是可以访问其他函数内部变量的函数,更详细说,函数中的变量只是属于函数作用域,在函数执行完成后作用域就被清流 内存也会被收回,
但是闭包是建立在函数中的子函数,由于它可以访问上级作用域,即使函数执行完作用域也不会销毁,这时候的子函数就是闭包,它便拥有访问上级作用域的权限 即便上级函数执行完作用域的值也不会被销毁
3.防抖和节流
都是将频繁的回调函数次数缩减 避免大量计算导致页面卡顿
不同之处:防抖是延迟执行 意思将多次执行操作变为最后一次执行。节流是将多次执行变为在规定时间内只执行一次
防抖原理:通过定时器将回调函数进行延迟,如果规定时间内继续回调发现之前的定时器则将该定时器清楚 重新设置定时器,这里要使用闭包来访问到之前的定时器
节流原理:在规定时间内只调用一次函数,如果在规定时间内又触发回调则什么都不做,也不会重置定时器,
防抖是将多次变为最后一次执行,节流是将多次在规定时间内只执行一次 即不会清楚定时器if (timer) clearTimeout(timer);
https://juejin.im/post/5c6bab91f265da2dd94c9f9e

浙公网安备 33010602011771号