ES6新特性
- let const
- 模板字符串
- 解构
- 函数传参默认值
- 箭头函数
- for of
- class类
- 导入导出
- promise
- async/await
- Set集合
- Spread/Rest操作符
- Symbol
1.let const
let 表示申明变量。const 表示申明常量。
- 常量定义了就不能改了。对象除外,因为对象指向的地址没变。
- const在申明必须赋值。
- 两者都为块级作用域。
块级作用域与函数作用域。任何一对花括号({和})中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域。函数作用域就好理解了,定义在函数中的参数和变量在函数外部是不可见的。
const a = 1
2.模板字符串``
使用反引号 `` 进行字符串拼接,${ }引用。
var a = 'hellow world'
var b = `你好${a}`
console.log(b)
3.解构
使用{ }对数组和对象进行解构。
//创建数组
const list = ['aaa','bbb','ccc'];
//数组解构
const [list1,list2,list3] = list;
//创建对象
const person = {
name:'张三',
age:12
}
//对象解构
const {name,age} = person;
4.函数传参默认值
函数传参可以有默认值
function hText(text = 'default'){
console.log(text);
}
5.箭头函数
- 不需要 function 关键字来创建函数
- 不能用new
- 省略 return 关键字
- this始终指向函数申明时所在作用域下的this值
//es5
var fun = function() {
}
//es6
var fn = () => {
}
6.for of
- for of遍历的是键值对中的值
- for in遍历的是键值对中的键
7.class类
ES6 中支持 class 语法,不过,ES6的class不是新的对象继承模型,它只是原型链的语法糖表现形式。
class Student {
constructor() {
console.log("I am a student.");
}
study() {
console.log('study!');
}
static read() {
console.log("Now.");
}
}
console.log(typeof Student); // function
let stu = new Student(); // "I am a student."
stu.study(); // "study!"
stu.read(); // "Now."
8.导入导出
- 导入improt
- 导出export default (可一次导入多个)
9.promise
Promise 用于更优雅地处理异步请求。
<script>
new Promise((resolve,reject) => {
setTimeout(function() {
resolve('成功了!')
},1000)
// reject("失败了,wuwu")
}).then(data => {
console.log(data)
}).catch(err => {
console.log(err)
})
</script>
10.async/await
比promise更好地解决了回调。
async function() {
awiat fn()
}
1、Async—声明一个异步函数(async function someName(){…})
- 自动将常规函数转换成Promise,返回值也是一个Promise对象
- 只有async函数内部的异步操作执行完,才会执行then方法指定的回调函数
- 异步函数内部可以使用await
2、Await—暂停异步的功能执行(var result = await someAsyncCall();)
- 放置在Promise调用之前,await强制其他代码等待,直到Promise完成并返回结果
- 只能与Promise一起使用,不适用与回调
- 只能在async函数内部使用
11.Set集合
存储任何类型的唯一值,即集合中所保存的元素是不重复的。类数组结构。
arr = [1,2,3,1]
let arrNew = new Set(arr)
arrNew = [1,2,3]
类数组不是数组,要转化为数组Array.form(arrNew)这样arrNew才是数组了。
12.Spread/Rest操作符 …
Spread / Rest 操作符指的是 …,具体是 Spread 还是 Rest 需要看上下文语境。
- 当被用于迭代器中时,它是一个 Spread 操作符:迭代器 (Iterator)是按照一定的顺序对一个或多个容 器 中的元素行进遍历的一种机制
function foo(x,y,z) {
console.log(x,y,z);
}
let arr = [1,2,3];
foo(...arr); // 1 2 3
- 当被用于函数传参时,是一个 Rest 操作符:当被用于函数传参时,是一个 Rest 操作符:
function foo(...args) {
console.log(args);
}
foo( 1, 2, 3, 4, 5); // [1, 2, 3, 4, 5]
13.Symbol
新的基本类型,表示独一无二的值,最大的用法是用来定义对象的唯一属性名。详情