每天都会给大家分享一些前端的知识总结,欢迎大家来进行指导学习
ES6的新增的方法
1.新增了let和const
在es6中通常使用let和const来声明,let表示变量,const表示常量
1.1特点
let和const都是块级作用域,是以{}代码块作为作用域范围,只能在代码块里面内使用,不存在变量提升,只能先声明再使用,不能重复声明
const声明是一个常量,在声明的时候必须赋值,而且是不能改变的(如果是一个对象,对象包含的属性可以进行更改,就是说对象所指向的地址不变,而变量成员是可以改变的)
补充:在js中,数据类型分为两种,基本数据类型和引用类型
普通数据类型有number,string,boolean,null,undefined五种
引用数据类型有:function,odject,Array
对象是引用类型,当对象的内容发生改变,对象所指向的地址也不会改变
2.模板字符串
在es6中引入了模板字符串的概念,用(``)来进行标识,也可以作为普通字符串来使用,也可以定义多行字符串,在字符串内可以嵌套变量,js表达式,函数,不过变量,js表达式,函数需要写到${}中
3.函数的扩展
3.1 可以给函数参数赋默认值
在定义函数的时候,给参数赋默认值,在不传参数的时候,使用这个默认值
3.2箭头函数
写法(参数)=> {...},当函数体只有一句代码时,连{}都可以省去,只有一个形参时,()可以省去
特点:在箭头函数里,它没有自己的this,它的this是指向父级函数,没有的话指向的是window
4.对象的扩展
4.1属性的简写
如过对象的键值对变量名相等时,可以进行简写,只写一个
var name = 'ljh';
var ljh = {name}; //等同于var ljh = {name:name}
4.2Object.keys()方法
获取对象的所有属性名,并返回一个数组
4.3 2Object.assign()
对多个对象进行合并,以第一个对象为目标将新的属性加到第一个对象上,如果合并的对象有相同的属性,后面的会覆盖前面的
5.for of 循环
var arr = [1,2,3,4];
for (var i of arr){
console.log(v);
}
// 1/2/3/4
6.import和export
在es6中原生js支持模块化,import为加载模块,export为导出模块,import和export只能在模块的顶部不能在模块中
使用export导出的模块,在导入的时候加上{},名字也要和导出的模块名字一致
使用 export defule默认导出时,在导入命名的时候可以随意命名,需要注意的是,在一个js文件中只能有一个默认导出
7.promise对象
promise对象是一种一步编程的解决方案,将异步操作,以同步的流程表达出来,避免了层层嵌套的回调函数,能解决异步处理的回调地狱问题。(这里先粗略的解释一下,promise的知识点很多,后面会单独出一篇总结)
8.解构赋值
解构赋值是对赋值运算符的扩展,针对对象或数组进行模式匹配,对其中变量赋值。注意要一一对应,如果有对应不上的值,它的值就是undefined
8.1数组的解构赋值
let [a,b,c] = [1,2,3];
//a==1,b==2,c==3
8.2对象的结构赋值
let {a,b} = {a:11,b:22}
// a==11,b==22
9.Set数据结构
set数据结构类似于数组,所有的值都是唯一的,没有重复的值,它本身就是一个数据结构,可以用于数组去重
10.class
在es6中,不像es5一样使用原型加构造函数实现继承,而是引入了Class的概念,写法更简单,更容易实现继承
11展开运算符(...)
展开运算符可以将对象或数组里面的值进行展开,整合到一个变量
12.async,await
使用async,await,搭配promise,可以通过编写形似同步的代码来实现异步流程,async用于申明一个异步函数,而await用于等待一个异步方法执行完毕
13.Symbol
Symbol是一种基本数据类型。通过symbol函数产生,它接收一个可选名称的参数,该函数返回值是唯一的