个人分享es6基础

19 阅读6分钟

ES 6 基础

注意:在看这一文档之前我已经是默认你们已经可以熟练的使用HTML,CSS,JavaScript的了,es 6是现代前端语法的规范,所以当你没有前端三剑客的基础知识 我希望你们可以先去掌握了再来学习es 6

常量和变量

  1. let声明 可以做出修改

  2. const声明 表示常量 不可被修改

  3. 块级作用域:可以使用{}在里面写专属于这一块的代码 在{}外面就不受到此块的影响

例如:

{

	let a =2
	a++ 

}

console.log(a)

此时 控制台时报错的 因为a只在块级中被定义了 在块级定义域外面是不受影响的

模板字符串

在原来的js当中 我们连接字符串的时候一般是这样子的

const str1 = 'abc' + 'efg'

但是在Es6当中我们可以这样子写

const str2 = 'efg${str1}'

看见了吗 这个${}的写法是不是很方便 请记住这种写法可以引入外部的变量

当然你换行也可以 比如这样子

const str2 ='efg${str1}
	这也是字符串
'

那么控制台输出时候就会是

'efg${str1} 这也是字符串 '

所以你明白了吗!

解构赋值

首先我们先来说一下数组的解构赋值

传统的数组书写应该是这样子的 一步一步的

const arr = [1,2,3]
var v1 = arr[0]
var v2 = arr[1]
console.log(v1,v2)

但是其实这样子太繁琐了 所以Es6就推出了一种新写法就是这样子

const [v1,v2,v3] = [1,2,3]
console.log(v1,v2,v3)

看见了吗 这样子是不是便利了很多 所以在以后的学习和工作中大家也要有这样的简化思想 让我们把精力主要放在重要的地方

现在我们来讲一下对象的解构赋值

传统的对象书写也是一步一步的 like that:

const pzt = {
	name:'pzt',
	age:'19'
	gender'male'
}

但是使用了解构赋值后就是这个样子

const{userName,age:userAge,gender} = {
	name:'pzt',
	age:'19'
	gender:'male'
}
console.log(userName,userAge,gender)

大家注意一下这个age:userAge这里,是什么意思呢 其实就是我不想使用age这个名称来当作age属性 所以我使用了一个别名userAge 所以你看在下面console.log()这里我也是直接引用userAge这个别名来输出的。

当然还有一种写法 我也来给大家介绍一下

const{userName,age:userAge,...otherInfo} = {
	name:'pzt',
	age:'19'
	gender:'male'
	hobby:'basketball'
}
console.log(userName,userAge,otherInfo)

有没有发现什么不同 没错 就是新添加了一个属性hobby但是在定义的时候我使用了...otherInfo 这里其实就是使用...来获取剩下没有被引用的属性 但是在console.log()这里引用时就不需要加... 直接otherinfo即可。

数组和对象的扩展功能

扩展运用符

好那么我们就直接上代码演示

const arr1 = [1,2,3]
const arr2 = [4,5,6]

那么我现在有一个需求就是要新建一个数组使得数组里面是arr1和arr2数组的合并,那么我们应该怎么操作呢,下面我来告诉你

const arr1 = [1,2,3]
const arr2 = [4,5,6]
const arr3 = [...arr1,...arr2]
console.log(arr3)

这样子即可,你发现了吗 扩展运用符其实和我们上面讲的剩余属性引用的写法其实是一样的 但是不同的是此时扩展运用符其实是在=后面

所以当你看见有代码是这样子写的时候 就不要有疑惑 其实只是合并在了一起而已 当然你想在arr3后添加其他元素元素也是可以的 只需要加个,再写你想写的元素即可

同时对象也是可以使用这个扩展运用符号的 我就不做过多的赘述 你们自己看代码就可以看的明白

const obj1 = {
	a:1
}
const obj2 = {
	b:2
}
const obj3 = {
	name:'pzt',
	...obj1,
	...obj2
}
数组方法

举个很简单的例子 arguments就是一个伪数组 它们具有length属性和数字索引,但没有数组方法

那么Es6就有一个数组方法叫做Array.from()可以将伪数组转为数组从而可以使用数组方法

function fn (){	
	Array.from(arguments).forEach(function (item){
		console.log(item)
	})
}

在这里你就可以发现arguments使用了Array.from()方法后可以使用forEach方法了

可能有人会有疑问 这个function (item)是啥意思 其实这是一个匿名函数 让每遍历一次就执行一次此函数

在Es6中 你可以使用上面所讲的剩余参数全面代替这个arguments

function fn (...Ifon){
	Ifon.forEach(function (item){
		console.log(item)
	})
}

看见了吗 完全就不需要Array.from这个方法 但是为什么需要你知道这个方法呢 因为 伪数组不止arguments这一种

所以你还是要了解的 只不过我为了好解释才这样子和你说

对象的方法

现在我们介绍一个新增的方法就是Object.assign()方法

这个方法有两个功能

1.可以浅拷贝一个对象

2.可以将两个对象合并在一起成为一个新的对象

我们先介绍第一个方法:

const objA={
	name = 'pzt',
	age = 18
}

const objB = Object.assign({},objA)
//在这里我们修改他的属性来展示objA和objB是两个截然不同的数组 只不过objB是从objA里拷贝而来
objB.name = 'a'
console.log(objA,objB)

你可以复制这段代码自己去试一试

接下来我们介绍第二个方法:

const objA={
	name = 'pzt',
	age = 18
}
const objB={
	gender = 'male'
}
consy objC = Object.assign({},objA,objB)
console.log(objC)

此时控制台输出的便是两个数组合并在一起的新数组

Class

好的接下来我们开始讲Es 6中Class的方法 如果学过了Java和Python的同学就会一点就通

其实就是构造方法 没什么区别

class A{
	constructor(name,age){
		this.name
		this.age
	}
	
	read(){
		console.log('阅读')
	}
}

const a1 = new A('pzt',18)
A.read()

你看 其实和Java是一模一样的

现在我们再介绍一个和Java一样的东西:继承

在class里面也是可以继承的

class B extends A{
 constructor (name,age,gender) {
		super(name,age)
		this.gender = gender
	}
	
	sayHello(){
		console.log('hello')
	}
}

你看见了吗 和Java一点区别都没有 没错就是这么爽!

(是不是有种见到亲人的感觉 反正我学的时候我就觉得:卧槽太爽了 终于有自己能看懂的东西了)

ok 我们开始下一节的学习

箭头函数

箭头函数可是一个好东西 你会用了之后就很上头了

按照传统的写法

const getSum1 = function (n){
	return n+3
}
console.log (getSum1)

应该是这样子的 但是我用箭头函数 一行就写完了

const getSum1 = n => n+3
console.log(getSum1)

是不是想大喊一句卧槽 没错 箭头函数就是这么容易 当然这只是对于你的函数逻辑简单一点的写法 如果你的函数复杂一点你就可以这样子写

const getResult = arr => {
	let sum = 0 
	arr.forEach(item => sum += item)
	return sum 
}
console.log(getResult([1,2,3,4,5]))

看见没 就是如此的简单

然后你想调用getResult函数的时候直接写getResult()即可

本章结束!!完结撒花 接下来我会再写一个关于Es6异步处理的md