一、ES6
1.1 介绍
ECMAScript第6版标准
ECMAScript是浏览器脚本语言的规范,而各种我们熟知的js语言,如JavaScript则是规范的具体实现
详细的参考:阮一峰的ES6教程
1.2 let 和 const 命令
var
有时定义的变量会成为全局变量
let
:声明一个变量,不会越界
const
:声明一个常量
1.3 字符串扩展
ES6为字符串扩展了几个新的API:
includes()
:返回布尔值,表示是否找到了参数字符串。startsWith()
:返回布尔值,表示参数字符串是否在原字符串的头部。endsWith()
:返回布尔值,表示参数字符串是否在原字符串的尾部。ES6中提供了`来作为字符串模板标记 : 在两个这个符号之间的部分都会被作为字符串的值,不管你任意换行,甚至加入js脚本
1.4 解构表达式
数组结构: 要用
[]
const [x,y,z] = arr;// x,y,z将与arr中的每个位置对应来取值
// 然后打印
console.log(x,y,z);
对象结构: 要用
{}
- 解构表达式获取值(结构的变量名是属性名) :const {name,age,language} = person;
- 想要用其它变量接收,需要额外指定别名:
{name:n}
:name是person中的属性名,冒号后面的n是解构后要赋值给的变量。
1.5 函数优化
赋默认值:方法参数列表赋默认值 (a, b=1)=>{}
箭头函数:()=>{}
对象中定义函数:
传统 eat:var print = function(obj){console.log(obj);}
箭头 eat:var print= obj => console.log(obj);
简写 eat(obj){console.log(obj)}
箭头函数结合解构表达式:
var hi = ({对象的属性名}) => console.log("hello," + 对象的属性名);
1.6 map和reduce
ES6 数组中新增了map和reduce方法
map() : 处理一个数组,遍历数组中的每一个元素用函数处理,把处理结果放入新的数组
reduce() : 接收一个函数(必须)和一个初始值(可选)。
接收的函数将接收两个参数: 第一个参数是上一次reduce处理的结果;第二个参数是数组中要处理的下一个元素
reduce()
会从左到右依次把数组中的元素用reduce处理,并把处理的结果作为下次reduce的第一个参数。如果是第一次,会把前两个元素作为计算参数,或者把用户指定的初始值作为起始参数
- 没有初始化值:
arr.reduce((a,b)=> a+b)
- 有初始化值:
arr.reduce((a,b)=> a+b,1)
1.7 对象扩展
- keys(obj):获取对象的所有key形成的数组
- values(obj):获取对象的所有value形成的数组
- entries(obj):获取对象的所有key和value形成的二维数组。格式:
[[k1,v1],[k2,v2],...]
- assign(dest, …src) :将多个src对象的值 拷贝到 dest中(浅拷贝)。
1.8 数组扩展
- find(callback):数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。
- findIndex(callback):数组实例的findIndex方法的用法与find方法非常类似,返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1。
- includes(数组元素):与find类似,如果匹配到元素,则返回true,代表找到了。