es6学习总结

本文深入探讨了ES6带来的各种新特性,包括let和const声明、解构赋值、字符串和数值的扩展、函数和数组的新功能、对象的增强以及箭头函数、Promise等异步操作的改进。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、let和const

		1.let声明的变量只在它所在的代码块有效。
		2.let声明的变量仅在块级作用域内有效。
		3.不存在变量提升。
		4.每个let声明的变量都有各自的作用域。它所声明的变量一定要在声明后使用,否则报错
		5.暂时性死区;只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响
		6.不允许重复声明let不允许在相同作用域内,重复声明同一个变量
		7.含有块及作用域 允许块级作用域的任意嵌套
		8.允许在块级作用域之中声明函数。
		9.do表达式加上do就能得到块及作用域的返回值
		10.有六种声明方法:var let const import function class
		11.es6中顶层对象不是window是global

二、解构赋值

	let[a,b,c]=[1,2,3]
	Let[foo,[[baz],faa]]=[1,[[2],3]]
	Let[a,y,...z]=[‘a’];//a=’a];y=undefinded;z=[];
	如果等号的右边不是数组将会报错
	Let[x,y,z]=new Set([‘a’,’b’,’c’])
	只要某种数据结构具有 Iterator 接口,都可以采用数组形式的解构赋值
	解构赋值允许指定默认值 let[a=true,a]=[‘a’,’b’];
	  let[a=true,b]=[undefined,’b’];//a=true,b=’b’
	 let[a=true,b]=[null,’b’];//a=null,b=’b’
	Let[x=y,y=1]=[1,2]//报错
	Let[x=1,y=x]=[2];//x=2,y=2;
	Let{foo,bar}={foo:’a’,bar:’b’}//
	Let{baz}={foo:’a’,bar:’b’}//undefined
	Let{foo:baz}={foo:’a’,baz:’b’}//’b’

三、字符串的扩展

	1.字符串的遍历接口 for...of
	2.at(index)
	3.Includes(string)
	4.startsWidth(string)//以什么开头
	5.endsWidth(string)//以什么结尾 
	6.repeat(number)//重复n遍
	7.padStart(number,string)//头部补全
	8.padEnd(number,string)//尾部补全
	四、数值的扩展
	0b二进制表示
	0o八进制表示
	Number.isFinite()//检查一个数是否有限
	Number.isNaN()//检查一个数是否为NaN
	Number.parseInt()
	Number.parseFloat()
	Number.isInteger()
	Number.EPSILON
	Number.isSafeInteger()则是用来判断一个整数是否落在这个范围之内范围在-2^53到2^53之间
	Math.trunc方法用于去除一个数的小数部分,返回整数部分
	Math.sign()Math.sign方法用来判断一个数到底是正数、负数、还是零。对于非数值,

五、函数的扩展

	1.能直接为函数的参数指定默认值
	2.rest 参数(形式为...变量名)
	3.name属性返回函数名字
	4.箭头函数
	5.函数绑定运算符是并排的两个冒号(::),双冒号左边是一个对象,右边是一个函数
	foo::bar(...arguments);
	// 等同于bar.apply(foo, arguments);

六数组扩展

	 1 .扩展运算符
	array.push(...items)和add(...numbers)
	// ES6的写法function f(x, y, z) {
	  // ...}
	let args = [0, 1, 2];
	f(...args);
	Array.from();
	Array,of()
	数组复制
	const a1 = [1, 2];
	const a2 = a1;
	
	a2[0] = 2;
	a1 // [2, 2]
	const a1 = [1, 2];
	const a2 = a1.concat();
	
	a2[0] = 2;
	a1 // [1, 2]
	合并数组
	// ES5[1, 2].concat(more)
	// ES6[1, 2, ...more]
	Array.from()Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象
	
	Array.of(a,b,c)Array.of方法用于将一组值,转换为数组。
	copyWithin()
	[1, 2, 3, 4, 5].copyWithin(0, 3)
	// [4, 5, 3, 4, 5]
	上面代码表示将从 3 号位直到数组结束的成员(4 和 5),复制到从 0 号位开始的位置,结果覆盖了原来的 1 和 2。
	find(function(){})数组实例的findIndex方法的用法与find方法非常类似,返回第一个符合条件的数组成员
	findIndex()数组实例的findIndex方法的用法与find方法非常类似,返回第一个符合条件的数组成员的位置
	fill方法使用给定值,填充一个数组。
	数组实例的 entries(),keys() 和 values() 
	keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。
	Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似
	数组的空位指,数组的某一个位置没有任何值。比如,Array构造函数返回的数组都是空位。

七对象的扩展

	Object.is()它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。
	Object.is('foo', 'foo')
	同之处只有两个:一是+0不等于-0,二是NaN等于自身。
	Object.assign()对象的合并
	Object.assign(target, source1, source2);
	如果undefined和null不在首参数,就不会报错。
	Object.assign方法实行的是浅拷贝,而不是深拷贝。
	对于这种嵌套的对象,一旦遇到同名属性,Object.assign的处理方法是替换,而不是添加。
	Object.assign([1, 2, 3], [4, 5])
	// [4, 5, 3]
	对象的遍历
	for...in
	for...in循环遍历对象自身的和继承的可枚举属性(不含 Symbol 属性)
	
	Object.getPrototypeOf该方法与Object.setPrototypeOf方法配套,用于读取一个对象的原型对象。

箭头函数

  箭头函数的语法非常简单,看一下最简单的箭头函数表示法
() => console.log('Hello')
之前没有接触过箭头函数的人可能会惊讶于其代码的简洁。对比之前如果要写一个这样的函数
	function(){
	console.log('hello')
	}
和普通函数的区别:
从上面的例子中,我们已经可以看出箭头函数的优势。和普通函数相比,
箭头函数主要就是以下两个方面的特点
  1.不绑定this,arguments
  2.更简化的代码语法

什么时候不能用箭头函数

1.作为对象的方法
  最好不要在对象的方法中使用箭头函数,这样可能会导致一些问题的产生。
  除非你很熟悉箭头函数。
2.不能作为构造函数
   由于箭头函数的this不绑定的特点,所以不能使用箭头函数作为构造函数,
   实际上如果这样做了,也会报错。
3.定义原型方法

super 和 extends 使用新的super和extends关键字扩展类:
1.super 必须在 this 之前被调用
在子类构造函数中,在使用 this 之前,必须先调用超级类。

class Apple {}
class GrannySmith extends Apple {
  constructor(tartnessLevel, energy) {
    this.tartnessLevel = tartnessLevel; // 在 'super' 之前会抛出一个错误!
    super(energy); 
  }
}

Promises in ES6
下面是一个简单的用setTimeout()实现的异步延迟加载函数:

setTimeout(function() {
  console.log('Yay!');
}, 1000);

 var wait1000 =  new Promise(function(resolve, reject) {
  setTimeout(resolve, 1000);
}).then(function() {
  console.log('Yay!');
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值