es6知识汇总

1.let定义

可以同时定义多个变量,不存在变量提升,块级作用域,不影响作用域链

let a = 3,b = 10, c = 'hello Amy';

2.const声明变量以及特点

声明常量,一定要赋初始值,一般常量使用大写。eg: const SCHOOL = '中科'

常量的值不能修改,块级作用域;

对于数组和对象的元素修改,不算做对常量的修改,不会报错

3.ES6变量的解构赋值

对象的解构赋值:

const zhao = {
				name: '赵本山',
				age: 60,
				getAge: function(){
					console.log('我今年60了');
				}
			}
			let {name,age,getAge} = zhao;
			console.log('name'+ name); //name赵本山
			console.log('age'+ age);//age60
			console.log('getAge'+ getAge());//我今年60了

注意:必须属性名和定义的let变量名一致

4.ES6模板字符串

使用方式反引号:``;内容中可以使用换行符;可以变量拼接;

            let name = 'Amy';
			let ming = `${name}今天去上学`;
			console.log(ming); //Amy今天去上学

5.对象的简洁写法

            let name = '小明';
			let age = function(){
				console.log('今天16岁了');
			}
			const ming = {
				name,//完整写法(name: name,)
				age,//完整写法(age: age,)
			}
			console.log('ming',ming);

6.箭头函数及使用特点

1)this始终是静态的,this始终指向函数声明时所在作用域下的this的值

        function getName() {
				console.log(this.name)
			}
			let getName2  = () => {
				console.log(this.name)
			}
			window.name = '小明';
			const school = {
				name: 'ATGUIGU'
			}
			//直接调用: this指向window对象
			 getName();  //小明
			 getName2(); //小明
			
			//call方法调用
			getName.call(school); //ATGUIGU
			getName2.call(school);  // 小明(箭头函数this静态的,始终指向getName2申明时候this的值)
			

2)箭头函数不能作为构造函数实例化对象

            let Person = (name,age) => {
				this.name = name;
				this.age = age;
			}
			let me = new Person('ming',23);
			console.log(me) //报错:TypeError: Person is not a constructor 
			let Person = function(name,age){
				this.name = name;
				this.age = age;
			}
			let me = new Person('ming',23);
			console.log(me)  //Person {name: "ming", age: 23}

3)不能使用arguments变量

            let fn = () => {
				console.log(arguments);
			}
			fn(1,2,1) //报错: arguments is not defined

实例:箭头函数:点击div,2s后变成粉色

        <div id='yyy'></div>
		<script>
			//箭头函数应用
			//需求1:点击div 2s后颜色变成粉色
			let sdr = document.getElementById('yyy');
			sdr.addEventListener("click",function(){
				setTimeout(() => {
					//这里使用箭头函数,this指向函数声明时得值
					this.style.background = 'pink';
				},2000)
			})
		</script>

实例: 从数组中筛选偶数

            //从数组中返回偶数的元素
			const end = arr.filter(item => {
				if(item %2 == 0){
					return true
				}
			})
			console.log(end) //[6,8]

7.函数参数的默认值设置 

//ES6允许给函数赋值初始值;

//形参初始值 具有默认值的参数,一般位置要靠后(潜规则)

与解构赋值结合

           function connect({host,username,password,port}){
			   console.log(host); //localhost
			   console.log(username); //root
			   console.log(password);//root
			   console.log(port);//8086
							  
		   }
		   connect({host: 'localhost',username: 'root', password: 'root',port: 8086})

8.rest参数

用于获取函数的实参,用来代替arguments

//es5获取实参的方式: 返回的是一个对象
		  function data(){
			  console.log(arguments)
		  }
		  data('小华','小明','小兰') //["小华", "小明", "小兰", callee: ƒ, Symbol(Symbol.iterator): ƒ]
		  /*es6获取实参的方式:返回的是一个数组(这样可以使用数组的方法,比如
		  map,filter,some,every等)*/
		  function data(...args){
			   console.log(args); // ["小华", "小明", "小兰"]
		   }
		    data('小华','小明','小兰')
//rest参数必须放在最后
function data(a,b,...args){
    console.log(a); //1
    console.log(b); //2
    console.log(args); //5,6,7
}
data(1,2,5,6,7);

9.扩展运算符

            //【...】扩展运算符能将数组转换为逗号分隔的【参数序列】
			//扩展运算符的应用
			//1.数组合并
			let arr = [1,2,3];
			let arr2 = [5,7,9];
			//1)es5的方法
			let arr3 = arr.concat(arr2);
			console.log(arr3) //[1,2,3,5,7,9]
			//1)es6的方法
			let arr3 = [...arr,...arr2];
			console.log(arr3) //[1,2,3,5,7,9]


            //数组的克隆
			let arr = [2,3,5,6]
			let arr1 = [...arr];
			console.log(arr1)

10.symbol的基本使用

1)symbol不能与其他数据进行运算

2)用symbol来创建对象的属性

11.迭代器

迭代器是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署Iterator接口,就可以完成遍历操作。

1)for…of

            let array = ['孙悟空','唐僧','猪八戒','沙僧'];
			for(let i of array){
				console.log(i)//孙悟空  唐僧  猪八戒  沙僧
			}
			for(let i in array){
				console.log(i);//0	1	2	3
				console.log(array[i])//孙悟空  唐僧  猪八戒  沙僧
			}

12.生成器-------函数(异步编程,纯回调函数)

            function * gen(){
				console.log('hello everyone');
			}
			let init = gen();//直接调取不能执行
			init.next()//只有调取next()才能打印出结果

13.Promise------解决回调地狱问题

14.Set集合

类似于数组,但它的成员的值都是唯一的。

1)size:返回集合的元素个数

2)add: 增加一个新元素,返回当前集合。

3)delete: 删除元素,返回boolean值

4)has: 检测集合中是否含有某个元素,返回boolean值。

            const s = new Set(['小学','中学','大学','大专','大学']);
			
			console.log(s) //{"小学", "中学", "大学", "大专"}
            let arr = [1,2,3,1,2,7,4,3];
			//1.数组去重
			let s = [...new Set(arr)];
			console.log(s)  //[1, 2, 3, 7, 4]
            let arr = [1,2,3,1,2,7,4,3];
			//2.交集
			let arr2 = [4,5,6,2];
			//首先arr去重,然后通过filter()方法判断arr2是否包含arr的项,有返回true,没有返回false
			let result = [...new Set(arr)].filter((item) => {
				let s2 = new Set(arr2);
				if(s2.has(item)){
					return true;
				}else{
					return false;
				}
			})
			console.log(result) //[2,4]
            //3.并集
			let arr = [1,2,3,1,2,7,4,3];
			let arr2 = [4,5,6,2];
			let arr1 = [...arr,...arr2];
			let arr4 = [...new Set(arr1)];
			console.log(arr4) //[1, 2, 3, 7, 4, 5, 6]
            //4.差集
			let arr = [1,2,3,1,2,7,4,3];
			let arr2 = [4,5,6,2];
			let arr1 = [...new Set(arr)].filter((item) => {
				let arr3 = new Set(arr2);
				if(arr3.has(item)){
					return false;
				}else{
					return true;
				}
			})
			console.log(arr1) // [1, 3, 7]

15.Map:他类似于对象,也是键值对的集合。但它的键的范围不限于字符串,各种类型的值都可以当作键。

1)size:返回Map的元素个数

2)set: 增加一个新元素,返回当前Map。

3)get: 返回键名对象的键值

4)has: 检测Map中是否含有某个元素,返回boolean值。

5)  clear: 清空集合,返回undefined

            let m = new Map();
			m.set('name','中科');
			console.log(m.get('name')) //中科

16.class介绍

            class Person{
				constructor(brand,price){
					this.brand = brand;
					this.price = price;
				}
				call(){
					console.log('我是测试员');
				}
			}
			let onePerson = new Person('one','200');
			onePerson.call() //我是测试员
            //静态成员
			class Person{
				static name = '小花',
				static age = '18',
				static change(){
					console.log('我是一名学生');
				}
			}
			let hua = new Person();
			console.log(hua.name) //会报错,name属性是静态属性,无法访问
            //class继承
			class Person{
				constructor(name,age){
					this.name = name;
					this.age = age;
				}
				call(){
					console.log('今天天气不错');
				}
			}
			class Teacher extends Person{
				constructor(name,age,sex){
					super(name,age);
					this.sex = sex;
				}
				help(){
					console.log('今天还要上班');
				}
			}
			let per = new Teacher('xiaoming',25,'女');
			console.log(per.name)//xiaoming
			per.help()//今天还要上班
			per.call()//今天天气不错

17.ES6数值扩展

             //Number.EPSILON 是javascript 表示的最小精度
			//EPSILON 属性的值接近于2.22E-16;
			function equal(a,b){
				if(Math.abs(a-b) < Number.EPSILON){
					return true;
				}else{
					return false;
				}
			}
			console.log(equal(0.1+0.2,0.3))

18.ES6对象扩展

           //ES6对象方法扩展
			Object.is 判断两个值是否完全相等
			console.log(Object.is(500,501)) //false
			console.log(Object.is(NaN,NaN)) // true
			console.log(NaN === NaN) //false
			Object.assign 对象的合并
			const ip = {
				host: 'localhost',
				port: 3045,
				name: 'root',
				password: '30783',
				test: 'ceshi'
			}
			const ip1 = {
				host: 'baidu',
				port: 3006,
				name: 'hua',
				password: '3063',
			}
			console.log(Object.assign(ip,ip1)) 
            //{"host":"baidu","name":"hua","password":"3063","port":3006,"test":"ceshi"}

19.ES7新特性

            // includes判断数组是否包含该元素
			let arr = [1,5,6,7];
			console.log(arr.includes(5)) // true
			//** 代表10次方
			console.log(2 ** 10) //1024

20.对象方法扩展

            let school = {
				name: '希望小学',
				cities: ['北京','上海','昆明'],
				xueke: ['前端','Java','大数据','运维'],
			}
			// for(let i in school){
			// 	console.log(i)
			// }
			console.log(Object.keys(school)); //["name", "cities", "xueke"]
			console.log(Object.values(school)) 
			       //0: "希望小学"
                   //1: (3) ["北京", "上海", "昆明"]
                   //2: (4) ["前端", "Java", "大数据", "运维"]
			console.log(Object.entries(school)) //["name", "希望小学"]
                                                 // ["cities", Array(3)]
                                                 //["xueke", Array(4)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值