es6的新特性有哪些及怎么使用

来源:互联网转载和整理 2024-05-16 09:20:52

es6新特性

es6新特性:const与let变量、模板字面量、解构、增强的对象字面量、for...of循环、展开运算符(...)、剩余参数(可变参数)、ES6箭头函数、类的支持、字符串模板、iterator、generator、模块、Symbols等。

1.let const

let 表示申明变量。const 表示申明常量。

常量定义了就不能改了。对象除外,因为对象指向的地址没变。

const在申明是必须被赋值。

两者都为块级作用域。

块级作用域与函数作用域。任何一对花括号({和})中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域。函数作用域就好理解了,定义在函数中的参数和变量在函数外部是不可见的。

consta=1a=0//报错

2.模块字符串``

可以使用反引号``来进行字符拼接。${}

3.解构

可以使用{}来对数组和对象进行解构。

4.函数的参数默认值

函数传参可以有默认值

//ES6;functionprintText(text='default'){console.log(text);}

5. Spread / Rest 操作符...

Spread / Rest 操作符指的是 ...,具体是 Spread 还是 Rest 需要看上下文语境。

当被用于迭代器中时,它是一个 Spread 操作符:迭代器 (Iterator)是按照一定的顺序对一个或多个容器中的元素行进遍历的一种机制

functionfoo(x,y,z){console.log(x,y,z);}letarr=[1,2,3];foo(...arr);//123

当被用于函数传参时,是一个 Rest 操作符:当被用于函数传参时,是一个 Rest 操作符:

functionfoo(...args){console.log(args);}foo(1,2,3,4,5);//[1,2,3,4,5]

6.箭头函数

不需要 function 关键字来创建函数

省略 return 关键字

this始终指向函数申明时所在作用域下的this值

//es5varfun=function(){}//es6varfn=()=>{}

7.for of

for of遍历的是键值对中的值

for in遍历的是键值对中的键

8.class类

ES6 中支持 class 语法,不过,ES6的class不是新的对象继承模型,它只是原型链的语法表现形式。

classStudent{constructor(){console.log("I'mastudent.");}study(){console.log('study!');}staticread(){console.log("ReadingNow.");}}console.log(typeofStudent);//functionletstu=newStudent();//"I'mastudent."stu.study();//"study!"stu.read();//"ReadingNow."

9.导入导出

导入improt

导出export default

10.promise

Promise 用于更优雅地处理异步请求。

<script>newPromise((resolve,reject)=>{setTimeout(function(){resolve('成功了!')},1000)//reject("失败了,wuwu")}).then(data=>{console.log(data)}).catch(err=>{console.log(err)})</script>

11.async/await

比promise更好的解决了回调。

asyncfunction(){awiatfn()}

12.Symbol

新的基本类型

13.Set集合

存储任何类型的唯一值,即集合中所保存的数据元素是不重复的。类数组结构。

arr=[1,2,3,1]letarrNew=newSet(arr)arrNew=[1,2,3]

类数组不是数组,要转化为数组Array.form(arrNew)这样arrNew才是数组了。