ES6新增语法
let 声明变量的关键字
使用let关键字声明的变量具有块级作用域,所以变量没有变量提升;使用var声明的变量不具备块级作用域特性。
const 常量
声明常量,常量就是值(内存地址)不能变化的量
let、const、var 的区别
解构赋值
数组解构
let [a, b, c] = [1, 2, 3];
console.log(a)//1
console.log(b)//2
console.log(c)//3
对象解构
let person = { name: 'zhangsan', age: 20 };
let { name, age } = person;
箭头函数
函数体中只有一句代码,且代码的执行结果就是返回值,可以省略大括号
如果形参只有一个,可以省略小括号
() => {} //():代表是函数; =>:必须要的符号,指向哪一个代码块;{}:函数体
const fn = () => {} //代表把一个函数赋值给fn
...(扩展运算符又称剩余参数)
let arr = [1,2,3,4,5,6]
console.log(...arr) //1 2 3 4 5 6
let obj = {age:18,name:"小白"}
console.log({...obj}) //{age: 18, name: '小白'}
允许我们将一个不定数量的参数表示为一个数组并获取
function sum (first, ...args) {
console.log(first); // 10
console.log(args); // [20, 30]
}
sum(10, 20, 30);
ES6 的内置对象扩展
Array 的扩展方法
map()方法:返回一个新数组,新数组中的元素为原始数组中的每个元素调用函数处理后得到的值
let arr = [1,2,3,4,5,6]
let newArr = arr.map((item)=>{ return item *2})
console.log(newArr); //(6) [2, 4, 6, 8, 10, 12]
reduce():可以简单的看作累加器
let arr = [1,2,3,4,5,6]
let newArr = arr.reduce((a,b)=>{return a+b})
console.log(newArr); //21
构造函数方法:Array.from()
将伪数组或可遍历对象转换为真正的数组
实例方法:find()
用于找出第一个符合条件的数组成员,如果没有找到返回undefined
实例方法:findIndex()
用于找出第一个符合条件的数组成员的位置,如果没有找到返回-1
实例方法:includes()
判断某个数组是否包含给定的值,返回布尔值。
role.includes('pyq_administrator') //role为数组
role.includes('admin')
String 的扩展方法
模板字符串
ES6新增的创建字符串的方式,使用反引号定义
let people={
name:"xiaoming",
age:12,
}
console.log("我是"+people.name+",今年"+people.age+"岁");//我是xiaoming,今年12岁
// 使用模板字符串 是用`${}`
console.log(`我是${people.name},今年${people.age}岁`);//我是xiaoming,今年12岁
startsWith()
表示参数字符串是否在原字符串的头部,返回布尔值
endsWith()
表示参数字符串是否在原字符串的尾部,返回布尔值
repeat()
repeat方法表示将原字符串重复n次,返回一个新字符串
Set 数据结构
ES6 提供了新的数据结构 Set,它类似于数组,但是成员的值都是唯一的,没有重复的值
// 数组去重
let Arr = [1,2,3,3,4,4]
let set = new Set(Arr)
console.log([...set]); //[1, 2, 3, 4]
Map数据结构
JavaScript 的对象,本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键;而Map可以看做是对象的一种扩展,它也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键
set方法设置键名key对应的键值为value
const m = new Map();
m.set('edition', 6) // 键是字符串
m.set(262, 'standard') // 键是数值
get方法读取key对应的键值,如果找不到key,返回undefined
const m = new Map();
const hello = function() {console.log('hello');};
m.set(hello, 'Hello ES6!') // 键是函数
m.get(hello) // Hello ES6!
has方法返回一个布尔值,表示某个键是否在当前 Map 对象之中
const m = new Map();
m.set('edition', 6);
m.set(262, 'standard');
m.has('edition') // true
m.has('years') // false
m.has(262) // true
delete方法删除某个键,返回true。如果删除失败,返回false
const m = new Map();
m.set(AC, 'nah');
m.has(AC) // true
m.delete(AC)
m.has(AC) // false
Module 模块化
es6 module之默认导出,指的是需要导出一个就行
//ex.js
var val = 'ex data'
export default val
//im.js
import val from './ex.js'
consloe.log(val) //'ex data'
es6 module之常规导出,指的是需要导出多个
//ex.js
var val = 'ex data'
export {val as valName}
//im.js
import { valname as hh } from './ex.js'
consloe.log(hh) //'ex data'