ES6新特性

块级作用域

引入letconst关键字,允许在块级作用域中声明变量和常量,解决了以前使用var关键字带来的作用域问题

箭头函数

提供了一种更简洁的函数定义语法,使用=>箭头符号,可以减少函数声明的代码量

默认参数

在函数定义时设置参数的默认值,在不传入参数时使用默认值

扩展运算符

在函数调用,数组,对象中展开数组或对象

解构赋值

允许通过模式匹配的方法从数组或对象中解析出值,并赋给变量,可以快速获取使用值

模板字符串

使用反引号`包裹字符串,使用${}插入变量和表达式,支持多行字符串的书写

引入类class的概念,并通过constructor方法定义构造函数,简化了面向对象编程

模块化

ES6引入了原生的模块系统,使用importexport关键字可以方便地导入和导出模块,提供了更好的代码组织和复用

Promise和异步await

引入了Promise对象和异步/await语法,提供了更好的异步编程方式,避免了回调地狱

Map和Set

引入了Map和Set两种新的数据结构,提供了更方便高效的数据存储和操作方式

数组方法

  1. find():返回数组中满足条件的第一个元素。
  2. findIndex():返回数组中满足条件的第一个元素的索引。
  3. filter():返回数组中满足条件的所有元素组成的新数组。
  4. forEach():遍历数组中的每个元素,并执行指定的回调函数。
  5. map():将数组中的每个元素进行处理,返回一个新数组。
  6. some():判断数组中是否有至少一个元素满足指定条件。
  7. every():判断数组中的所有元素是否都满足指定条件。
  8. reduce():对数组中的元素进行累加或累积计算。
  9. includes():判断数组是否包含指定的元素。
  10. Array.from():将类似数组的对象或可迭代对象转换为真正的数组。

字符串方法

  1. startsWith():判断字符串是否以指定的字符开头。
  2. endsWith():判断字符串是否以指定的字符结尾。
  3. includes():判断字符串是否包含指定的字符。
  4. repeat():重复字符串指定次数。
  5. padStart():在字符串的开头添加指定字符,直到字符串达到指定长度。
  6. padEnd():在字符串的结尾添加指定字符,直到字符串达到指定长度。
  7. trim():去除字符串两端的空格。

面向对象编程

面向对象的特征

1、“抽象”,把现实世界中的某一类东西,提取出来,用程序代码表示;

2、“封装”,把过程和数据包围起来,对数据的访问只能通过已定义的界面;

3、“继承”,一种联结类的层次模型;

4、“多态”,允许不同类的对象对同一消息做出响应。

事件循环

事件循环过程确保了 JavaScript 在单线程环境下的异步执行

通过将异步任务转换为微任务,在适当的时机执行,保证了任务的顺序性和及时性

  1. 同步任务执行,这个过程可能会产生微任务,将微任务加入到微任务队列中

  2. 微任务执行,微任务执行的时候可能会产生新的微任务,系统会将所有微任务执行完成,直到微任务队列为空

  3. 执行宏任务,执行过程可能会产生微任务,将微任务加入到微任务队列中

  4. 微任务执行,微任务执行的时候可能会产生新的微任务,系统会将所有微任务执行完成,直到微任务队列为空

  5. 执行下一个宏任务,执行过程可能还会产生微任务,将微任务加入到微任务队列中

再次执行2,如此往复,事件就循环起来了

null和undefined

undefined代表未定义的,通常是

  • 定义一个变量没有初始化,JavaScript就会给他一个undefined
  • 没有给一个形参传实参,那么这个形参的变量值为undefined
  • 一个没有指定返回值的函数调用后返回undefined

null代表一个空值,JavaScript不会主动给一个变量设置null,JavaScript只会给一个未初始化的变量设置为undefined,它是用来让程序员表明某个用var声明的变量时没有值

前端缓存的理解 || 前端数据持久化的理解

http缓存是做http请求传输时带上的缓存,一般是后端配置,主要在服务器代码上配置,浏览器缓存一般是前端在js中配置的

一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷

缓存是最简单高效的数据请求优化方法,数据请求可分为,发送请求,后端处理,浏览器响应三个阶段,缓存可以在一和三中进行优化,比如直接使用缓存不请求数据,或者前端发送请求,但后端和前端数据一样,后端就不用回传数据,减少浏览器响应数据