1、js数据类型
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
2、let / const / var
var 定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。
let 定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
const 用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改;
【注:基本数据类型 [不能修改], 引用数据类型 [可以修改 => 对象指针没有发生改变]】
3、箭头函数
用了箭头函数,没有自己的this,函数里的this是外层代码(定义时,非执行时)this的引用;
箭头函数有两种格式,一种像上面的,只包含一个表达式,连{ ... }和return都省略掉了。还有一种可以包含多条语句,这时候就不能省略{ ... }和return;
1、箭头函数不能用于构造函数
2、箭头函数没有prototype属性
3、箭头函数不绑定arguments
4、箭头函数不绑定this
5、箭头函数无法使用 call()或 apply()来改变其运行的作用域
4、Promise
Promise是一个构造函数,是同步执行的,then方法是异步执行的
reject 是用来抛出异常,catch 是用来处理异常;
三个状态: pending(待定)、fulfilled(已兑现)、reject(已拒绝);
方法: all(), reject(), resolve(), race(),
原型方法(实例方法): then(), catch(), finally();
5、async / await 运算符
await 等待 async 封装 Promise 的 resolve 作为运算结果;
async 会将其后函数的返回值封装成一个 Promise 对象,而 await 会等待这个 Promise 完成,并将其 resolve 的结果返回出来。
6、Set、Map
Set用于数据重组,Map用于数据储存;借鉴
7、强缓存、协商缓存
强缓存:又称本地缓存。顾名思义,就是指浏览器不会发出请求,直接从缓存中获取,
控制 强缓存的两个header字段是:expires 和 cached-control。
协商缓存:借鉴