这是我了解的ES6,希望可以帮助到你们
ES6数组的遍历,新增了好多好方法:every find some map forEach filter reduce
- let和var
var 是函数作用域 在function中运用,let 是块级作用域 直接{}运用。
var通过函数 进行闭包隔离 let直接隔离,适应let定义变量 在大括号外面就访问不到 - const
常用是块级范围的,非常类似用 let 语句的变量。但常量的值是无法(通过从新赋值)改变的,也不能被重新声明。
值不可变是指内存地址不可变 (对象可以改变) - 解构
结构的意思就是分解一个东西的结构,可以用一种类似数据的方式定义N个变量,可以将一个数据中的值按照规则赋值过去。
语法堂 var [name,age] = [‘jing’,8]; 可以这样赋值,比较优雅 - 嵌套复制
let [x,[y],z] = [1,[2,5],5.6] ; let [x,[y,z]] = [1,[2,5,5.6]] ;等,也可以是json对象{name:“jin”}
console.log(x,y,z); - Set集合
存储数据具有去重的作用,避免冲突。
var books = new Set(); //存值 books.add('js');
books.has('js'); //判断集合中是否有此元素 和 includes(); 类似
books.size; //集合中元素的个数
books.delete('js'); //删除
books.clear(); //清空
books.forEach((value,key)=>{ //forEach可以迭代map
console.log( key + '+' +value);
});
- Map
可以使用 Map 来组织这种键值对的数据 var books = new Map();
books.set('js',{name:'js'});//向Map中添加元素
books.size;//查看集合中的元素
books.get('js'); //通过key获取值
books.has('js');//判断map中有没有key
books.delete('js'); //删除
books.clear(); //清空
console.log();打印
- 迭代器 *
定义:对Java程序中需要反复执行的子程序*(一组指令),进行一次重复,即重复执行程序中的循环,直到满足某条件为止。
生成迭代器:
function* buy(books){
for(var i = 0; i< books.length; i++){
yield books[i];
}
}
let buying = buying.nest();
var curr;
do{
curr = buying.nest();
console.log(curr);
}while(!curr.done);
- 数组生成一个迭代器:
const numbers = [1,2,3];
const it = numbers[Symbol.iterator]();
console.log(it.next());
console.log(it.next());
console.log(it.next());
- Symbol
每一个Symbol() 返回的symbol值都是唯一的。
不可new 如:let use = new Symbol(); 会报错
let key = Symbol(‘user’); //正确写法
Symbol值永远不能相等,只能和自己相等。
内置方法:
- 迭代Symbols
Symbols.iterator //一个返回一个对象默认迭代器的方法。被 for...of 使用
- Symbol.toStringTag //用于对象的默认描述的字符串值。被Object.ptototype.toString()使用
- Symbol.match //用于对字符串进行匹配的方法,也用于确定一个对象是否可以作为正则表达式使用。被String.prototype.match() 使用。
- Symbol.replace //一个替换匹配字符串的子串的方法,被 String.prototype.ewplace()使用。
- Symbol.search //一个返回一个字符串中与正则表达式相匹配的索引的方法。被String.prototype.search()使用。
- Symbol.split //一个正匹配正则表达式的索引处拆分一个字符串的方法。被String.prototype.split()使用。
-
Reflect
-
es6中 ‘…’ 是什么意思:
1、var set = new Set([1, 2, 3, 4, 4,4,4,4,2,2,2])set=[…set]
第一个叫做 展开运算符(spread operator),作用是和字面意思一样,就是把东西展开。可以用在array和object上都行。
2、let [head, …tail] = [1, 2, 3, 4];
第二个,第三个叫做 剩余操作符(rest operator),是解构的一种,意思就是把剩余的东西放到一个array里面赋值给它。一般只针对array的解构,其他的没见过。