主要是一些ES6基础知识,代码已上传至我的github地址
ES6
EcmaScript,是一个制定脚本语言标准的组织
let、const和var的区别
let可以重新赋值,const不行
let和const | var | |
---|---|---|
能否重复声明变量 | 不可以 | 可以 |
作用域范围 | 块作用域 | 函数作用域 |
块作用域就是大括号内部
在函数里想引用外面的只能用window.变量值
实际写代码时主要用const
箭头函数
特点
- 能够使函数的写法更简洁(一行写完一个函数)
- 函数返回值可以被隐式返回(不需要写return)
- 不重新绑定this的值
1 | <script> |
普通的function函数this会重新绑定,但是箭头函数不会重新绑定
1 | <style> |
模版字符串
``两个反引号
1.反引号中用${person.hobby}形式引用数组
2.在console.log时用反引号可以直接换行
Set和Map
set
可以保证数组里每个元素都是唯一的
增加用add,删除用delete,遍历用forEach
map
添加用set,删除用delete,判断是否有用has
解构数值
1.已有数组
1 | const person ={ |
2.字符串=》数组
1 | const info = 'lf,23,nanjing' |
3.两个值互换
1 | [b,a]=[a,b] |
剩余和扩展函数
牵扯到把多个变量合并成一个数或者把一个数组拆成多个变量的,可以在前面加...
函数默认函数值、字符串方法和for of
函数定义有参数,但引用时未传值时返回的是undefined
字符串方法includes,startswith,endswith
for of感觉可以用map替代
forEach、for in、for of三者区别
forEach更多的用来遍历数组
for in 一般常用来遍历对象或json
for of数组对象都可以遍历,遍历对象需要通过和Object.keys()
for in循环出的是key,for of循环出的是value
使用class 手写一个promise
1 | //创建一个Promise的类 |
如何使用Set去重
1 | let arr = [12,43,23,43,68,12]; |
将下面for循环改成for of形式
1 | let arr = [11,22,33,44,55]; |
答案:
1 | let arr = [11,22,33,44,55]; |
理解 async/await以及对Generator的优势
async await 是用来解决异步的,async函数是Generator函数的语法糖
使用关键字async来表示,在函数内部使用 await 来表示异步
async函数返回一个 Promise 对象,可以使用then方法添加回调函数
当函数执行的时候,一旦遇到await就会先返回,等到异步操作完成,再接着执行函数体内后面的语句
async较Generator的优势:
(1)内置执行器。Generator 函数的执行必须依靠执行器,而 Aysnc 函数自带执行器,调用方式跟普通函数的调用一样(2)更好的语义。async 和 await 相较于 * 和 yield 更加语义化
(3)更广的适用性。yield命令后面只能是 Thunk 函数或 Promise对象,async函数的await后面可以是Promise也可以是原始类型的值
(4)返回值是 Promise。async 函数返回的是 Promise 对象,比Generator函数返回的Iterator对象方便,可以直接使用 then() 方法进行调用
JavaScript 在发展过程中,共经历了回调函数、Promise 对象、Generator 函数,async 函数来处理异步。我们接下来就来看一下 async 函数如何更优雅的处理异步。
假设我们需要分别读取 a、b、c 三个文件,具体代码如下:
1 | const fs = require('fs'); |
说一下es6的导入导出模块
导入通过import关键字
1 | // 只导入一个 |
导出通过export关键字
1 | //可以将export放在任何变量,函数或类声明的前面 |
- 本文作者: Raphael_Li
- 本文链接: https://lifei-2019.github.io/ES6-1/
- 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!