ES6介绍:
1. 什么是ES6?
ECMAScript 6.0(简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。
它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。
2. JavaScript 和 ECMA Script 的区别?
javascript, Java特别火,导致名字一直是javascript
ECMA组织制定js标准,不想用java, 叫ECMA Script 6.0
java是有商标的,有些情况不好用
变量
1.ES6声明变量的六种方法
ES5 只有两种声明变量的方法:var命令和function命令。
ES6 除了添加let和const命令,还有import命令和class命令
1):var
如果用 var 声明的变量 提前调用的话 -- undefined
如果不声明直接调用的话 -- not defined
2):let
let 声明的变量 没有变量提升
let 不允许重复声明变量
let 是 块级作用域
3):const
const 声明一个只读的常量(一旦声明,常量的值就不能改变
const 声明常量的同时给其赋值 否则会报错
const 不可重复声明,不能再次赋值
const 声明的常量,名称要大写
解构赋值
概念:解构赋值是对赋值运算符的扩展。
它是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值
=:赋值 ==:比较 ===:全等于
最简单理解等号左边多个值,等号右边也可以有多个值
注:对应的结构
数组相关
1): forEach()
var arr = ["react", "vue", "微信"];
arr.forEach(function (value, index, a) {
// console.log(value) // 第一个参数 数组的每一项
// console.log(index) // 第二个参数 索引值
// console.log(a) // 第三个参数 数组本身
})
2): filter()
var arr = [{ id: 1, done: true }, { id: 2, done: false }, { id: 3, done: false }, { id: 4, done: true }]
var a = arr.filter(function (v) { // 过滤符合条件的元素 返回一个新的数组
return v.done // return 后面表达式为true 时 留下这个元素
})
// console.log(a)
3): map() // 对数组元素处理,返回一个处理后数组
对原数组的内容不发生改变
4): some()
5): every()
6): find()
用于找出第一个符合条件的数组成员 如果没找到 返回 undefined
7): findIndex()
返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1
8): includes()
返回一个布尔值,表示某个数组是否包含给定的值
9): for...of 循环 遍历数组
for(let v of arr){ }
10): ...用法
函数相关
默认参数
箭头函数
rest函数(可变参数的函数)
1.默认参数用法
function hello(x=10,y=20){ }
2.箭头函数
格式:
(参数1,参数2,....) => {
}
注1: 如果参数只有一个,可以省略()
如果没有参数或有多个参数, 必须加上 ()
注2: { }中只有一个renturn语句时,省略{ }和return
注3: 箭头函数好处
1): 简化回调函数
2):中this指向定义的时作用域
3.rest函数
用途:定义变参的函数 剩余参数...只能定义在最后面
格式:function fun(a,b, ...list){ }
箭头函数的this指向
箭头函数 里面的this 指向定义时的环境
改变this指向的三种方法
1): call
2): apply
3): bind // bind 有返回值 返回的是 修改后的方法
类 和 对象
1、对类和对象有什么改进
提供了关键字 class 定义类
提供了关键字 extends 继承一个类 、super()执行父类的初始化函数
提供了对象字面量, 定义一个函数
2、关键字 class 的用法
格式:
class 类名{
//自动调用初始化函数
constructor(name){
//添加的属性
this.name = name;
}
say(){
(方法函数
}
}
// var 变量名 = new 类名("×××");
3、extends继承的使用
格式:
class 子类类名 extends 父类{
constructor(name,score){ // extends 继承的关键字
super(name); // super 当前对象的原型对象
this.score = score;
}
show(){
(方法函数
}
}