前言
提示:这里可以添加本文要记录的大概内容:
ES6的新特性总结。
1.let和const
let表示申明变量,const表示申明常量。
- 常量定义了就不能改变。对象除外,因为对象指向的地址没变。
- const在申明时必须被赋值。
- 两者都是块级作用域
块级作用域:
任何一对花括号()和{}中的语句都集中属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域。
函数作用域:
定义在函数中的参数和变量在函数外部都是不可见的。
常量不可改变
const a=1;
a=0;//报错
2.模板字符串``
可以使用烦引号``来进行字符串拼接。${}对变量赋值。
let a=6666;
console.log(`nihao${a}`); //nihao6666
3.解构
可以使用{}来对数组和对象进行解构。
//创建数组
const foodList = ['西兰花','花菜','辣椒','肉'];
//数组结构
const [food1,food2,food3,food4]=foodList;
console.log(food1); //西兰花
console.log(food2); //花菜
console.log(food3); //辣椒
console.log(food4); //肉
//创建对象
const person={
name: '小明',
skill: '染发',
color: '白色',
}
//对象解析
const { name, skill, color } = person;
console.log(name); //小明
console.log(skill); //染发
console.log(color); //白色
4.函数参数的默认值
函数传参可以有默认值
function printText(text = 'default') {
console.log(text); //default
}
5.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操作符。
function foo(...arrs){
console.log(arrs);
}
foo(1,2,3,4,5,6);// [1,2,3,4,5,6]
6.箭头函数
- 不需要function关键字来创建函数
- 省略return关键字
- this始终指向函数申明时所在作用域下的this值
//es5
var fun = function(){
}
//es6
var fn = () => {
}
7.for of
- for of遍历的是键值对中的值
- for in遍历的是键值对中的键
8.class类
ES6中支持class语法,不过,ES6的class不是新的对象继承模型,它只是原型链 语法表现形式。
class Students{
constructor(){
console.log("I'm a student.");
}
study(){
console.log('study!');
}
static read(){
console.log("Reading Now.");
}
}
console.log(typeof Student); //function
let stu = new Student();
stu.study(); // "study!"
stu.read(); // "Reading Now."
9.导入导出
- 导入improt
- 导出export default
10.promise
Promise用于更优雅地处理异步请求
new Promise((resolve,reject) => {
setTimeout(function() {
resolve('成功了!')
}, 1000)
// reject("失败了,wuwu")
}).then(data => {
console.log(data)
)}.catch(err => {
console.log(err)
)}
11.async/await
比promise更好的解决回调
async function(){
await fn()
}
12.Symbol
新的基本类型
13.Set集合
存储任何类型的唯一值,即集合中所保存的元素是不重复的。类数组结构。
arr = [1, 2, 3, 1];
let arrNew = new Set(arr);
let ar = Array.from(arrNew);
console.log(ar) // [1, 2, 3]
类数组不是数组,要转化为数组Array.from(arrNew),这样arrNew才是数组了。