箭头函数
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions
基础语法:
a => b; 参数 a , 返回 b
(a, b) => {var temp = 1; return a + b;} 多条语句和多条参数,用括号包裹
特殊的this:
- 箭头函数内部不会生成新的this绑定,其this等于箭头函数所在环境的this。e.g:
1 | //传统函数 |
- 箭头函数会忽略strict对于this的规则。
- 箭头函数会忽略call/apply传递的this参数。
- 箭头函数没有arguments相关参数。在箭头函数内部调用arguments会引用到外部函数的arguments
类
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes
基础语法
1 | class Test { |
加强的对象字面量
基本用法
1 | var obj { |
模板字符串
基本用法
1 | var name = "Bob", time = "today"; |
解构赋值
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
基本用法
1 | var a, b, rest; |
默认参数
基本用法
1 | function f(x, y=12) { |
剩余合并
基本用法
1 | function f(x, ...y) { |
扩展
基本用法
1 | function f(x, y, z) { |
let const
基本用法
1 | let temp; |
特点
- let没有变量提升。
- let仅在块级作用域生效。(如 if 作用域)
- let 无法再同一块级作用域重复声明。
- const赋值之后无法被修改。
Iterator遍历器
Iterator 主要供 for…of 遍历使用。 一个 Iterator 主要有以下结构:next 方法。返回 {done: false/true,value: xxx} 在ES6中,具备 Symbol.iterator
属性的数据结构称为Iterable(可遍历) , 数组、对象、字符串等都默认实现了 Symbol.iterator
。
1 | let arr = ['a', 'b', 'c']; |
for…of 方法
遍历Iterator(遍历器)
基本用法
默认数组、字符串、对象等都实现了Symbol.iterator
接口,也可以自己实现,只要实现了该接口,就可以通过遍历器遍历。
1 | let iterable = { |
Symbol
Symbol是ES里面的新类型。用于生成一个独一无二的属性,多用于解决命名冲突的问题。如:
1 | var mySymbol = Symbol(); |
Symbol也不会被for…of for…in 等遍历出来。
generator
generator可以直接返回iterator,其语法形式为:
1 | function* test() { |
其中,generator function写作function ,在function 中,遇到 yield,代码执行就会停止,直到下次调用 next 方法,yield的返回值会作为 value,遇到return,此次iterator遍历完毕。
yield*
yield之后可以继续跟一个 generator,其效果为执行next的时候将进入到新的generator中执行,类似于深度遍历。
1 | function *foo() { |
Unicode
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/unicode
Modules 模块化
基本语法
1 | //a.js,导出变量 |
Map
Map
基本语法
Set
Set就是不含重复值的数组。
基本语法
1 | var s = new Set(); |
Map
Map 是 object 的升级版本,可以使用任何类型作为 key值。
基本用法
1 | var m = new Map(); |