什么是事件冒泡
- DOM事件流有3个阶段:捕获阶段,目标阶段,冒泡阶段;三个阶段的顺序为:捕获阶段——目标阶段——冒泡阶段;
- 对于非目标阶段的元素,事件响应执行顺序遵循先捕获后冒泡的原则;通过暂缓执行捕获事件,可以达到先冒泡后捕获的效果;
- 对于目标元素,事件响应执行顺序根据的事件的执行顺序执行;
localStorage和sessioStorage和cookei的区别
- cookie:可设置失效时间,没有设置的话,默认是关闭浏览器后失效
- localStorage:除非被手动清除,否则将会永久保存。
- sessionStorage: 仅在当前网页会话下有效,关闭页面或浏览器后就会被清除。
- localStorage:sessionStorage: 储存有5M左右,cookei4kb左右
- cookie:每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题
- localStorage和sessionStorage:仅在客户端(即浏览器)中保存,不参与和服务器的通信、
箭头函数
- 不需要 function 关键字来创建函数
- 省略 return 关键字
- 继承当前上下文的 this 关键字
数组有哪些方法
- join() 方法用于把数组中的所有元素放入一个字符串。
- push() 会改变原数组,接收任意个数的元素,把它们逐个添加到数组末尾,返回值是修改后数组的长度
- pop()删除数组末尾最后一项,返回值是被删除元素的值,会改变原数组
- shift() 删除数组第一项,并返回删除元素的值,改变原数组
- unshift()将参数添加到原数组开头,并返回数组的长度,改变原数组
- sort() 改变原数组,是在原数组上进行排序,超过10以上就不对了,
- reverse() 方法用于颠倒数组中元素的顺序。 返回值就是改变顺序后的数组,会改变原来的数组
- concat()将一个参数或者多个参数连接到原数组的副本中,没参数时只是复制当前数组并返回副本。不会改变原有的数组
- slice() 不会改变原数组,返回值是选定元素组成的新数组
- splice() 会改变原始数组,返回值是 包含被删除项目的新数组(如果有的话), 空数组调用此方法不会有操作,也不会报错
- indexOf() 不会改变原数组,可返回数组中某指定元素的索引,如果在数组中没有找到则返回-1
- lastIndexOf() 不会改变原数组,和indexOf类似,区别在于查找方法从右到左
- forEach() 可能会改变原数组,在原数组的基础上进行遍历,遍历过程中可以操作原数组内部元素
- 对数组进行遍历循环,对数组中的每一项运行参数的函数。参数都是function类型,其中对应的参数分别为:遍历的数组内容,对应的数组索引,数组本身
- map() 不会改变原数组,返回的是一个新数组,新数组中的元素为原始数组元素调用函数处理后的值
- 指“映射”,对数组中的每一项运行参数的函数,并返回每次函数调用的结果组成的数组
- 注意:map() 不会对空数组进行检测
- filter() 不会改变原始数组,返回值是满足筛选条件的新数组
- every() 不会改变原数组,返回值为true或false
- 判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true。
- some() 不会改变原数组
- 判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。