前端面试题2019
1.var,let,const区别 (1)var存在变量提升,let和const不存在变量提升,所以只能在变量声明之后使用,否则会报错。 (2)const不可修改,声明时,直接初始化,var,let可修改,但是如果const指向的是一个引用值,只需要保证引用值的地址不改变即可。 (3)let和const都是块级作用域,var是函数级作用域。 (4)let,const都不允许在相同的作用域内声明同一变量。 2.事件冒泡、事件委托以及事件捕获? 事件冒泡就是子级元素的某个事件被触发,它的上级元素的该事件也被递归执行。冒泡的终点是window。 阻止事件冒泡在子级元素上面加上e.stopPropagation()阻止事件冒泡。 事件委托其实是使用了冒泡的原理,从点击的元素开始,以递归方式的向父元素传播事件,这样做的好处是对于大量要处理的元素,不必为每个元素都绑定事件,只需要在他们的父元素上绑定一次即可,提高性能。 还有一个好处就是可以处理动态插入dom中的元素,直接绑定的方式是不行的。 事件捕获是最外层的事件先被触发,最后才是我们点击的button事件被触发,这便是事件捕获。 阻止事件捕获的方式是e.stopPropagation()。 3.防抖: 理解:在车站上车,人员上满了车才发走重点是人员上满触发一次。 场景:实时搜索,拖拽。 实现: //每一次都要清空定时器,重新设置上计时器值