let 与var const的区别
let不存在变量提升
变量提升(原生js的语法):在最上面定义变量,但是没有赋值
相同的变量名不允许重复声明
块级作用域(ES5内只有全局作用域 函数作用域)
暂时性死区(也叫临时失效区),let声明的变量在当前函数内不允许同名的变量进来
const:声明一个只读的变量,一旦声明,常量的值就不能改变。
const实际上保证的,并不只是表面上的变量的值不得改动,而是变量指向的那个内存不能改动。拓展:有个叫Object.freeze()的方法可以把这个函数冻结
箭头函数(主要需掌握this指向问题)
箭头函数=>定义匿名函数(声明时的this),普通函数指的是调用时候的this
箭头函数this指向父作用域的this
函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
不可以使用arguments对象【arguements是类数组,把所有参数都返回到这个类数组中】,该对象在箭头函数体不存在。如果要用,可以用rest【rest代表剩余的】参数代替。
解构
含义:从数组和对象中提取值,对变量进行赋值的过程称为解构
对象解构:
数组解构
拓展运算符…
作为数组的一部分
数组复制
合并数组
合并对象
类数组转化成数组、解构rest
class关键字 在js继承篇里有提到
promise:
promise是异步编程的一种解决方案,将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数(回调地狱)
- 一个promise可能有三种状态:pengding(进行中)、fulfilled(已成功)、rejected(已失败)
- 一个promise的状态只可能从“等待”转到“成功”,或者“失败”,不能逆向转换,同时“成功”“失败”不能相互转换。
- 成功调用resolve(),失败调用reject()
- resolve进入then,reject进入catch【两种写法】
promise下两个比较重要的方法
genrator
概念:
特点:
-
写法:function与函数名之间有一个星号
-
内部用yield表达式来定义不同的状态
-
generator函数返回的是指针对象,而不会执行函数内部逻辑
-
调用next方法函数内部逻辑开始执行,遇到yield表达式停止,返回{value:yield后的表达式结果/undefined,done:false/true}
-
再次调用next方法会从上一次停止时的yield处开始,直到最后
-
yield语句返回结果通常为undefined,当调用next方法时传参内容会作为“启动时”yield语句的返回。
async/await
真正意义上去解决异步回调的问题,同步流程表达异步操作。
本质: generator的语法糖
语法:async function foo(){ await 异步操作;await异步操作;}
特点:
版权声明:本文为weixin_43735746原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。