ECMAScript2015(ES6)是Javascript最标准的语法式样,是在2015年6月由Ecma国籍组织公布的最新版本,现在已经被多个领域和浏览器所广泛采纳和使用。
ES6学习
https://github.com/lukehoban/es6features
https://babeljs.io/learn-es2015/ES6支持程度
http://node.green/
http://kangax.github.io/compat-table/es6/
let命令
let命令比var命令更加严谨,使用let命令定义变量可以解决var定义变量的作用域问题,以及重复定义问题
1 | if (true) { |
1 | var i = 0; |
const命令
用于定义常量
1 | const data = 10; |
进制转换
1 | console.log(0b10); //2 |
嵌入字符串
定义模板
1 | let name = "Koma"; |
解析模板
1 | $ node |
1 | let name = "tt"; |
Symbol原始类型
Symbol内部有个唯一的id(是一个hash值),在作比较时比较的是该id值。
1 | let str1 = String("HeloWorld"); |
使用场景
- 作为常量
1 | const Java = Symbol(); |
- 作为属性
1 | let s1 = Symbol("mySymbol"); |
- 办隐藏属性
1 | const MYKEY = Symbol(); |
解构赋值
1 | //数组赋值 |
for….of循环
1 | let list = [10, 20, 30]; |
默认/可变长形参
- 形参默认值
1 | function add(a=1, b=a){ |
- 可变长形参
1 | function sum(...args) { |
Array扩展
- includes():是否包含某个元素, 传入元素即可。
- find():查找某个元素。箭头函数返回ture表示找到了,并返回该元素。
- findIndex():返回要查找值得索引,没有则返回-1。
- forEach():遍历每一项,不能终止
- some():箭头函数返回true,终止遍历
- filter():过滤,返回一个新数组。箭头函数返回false表示过滤
- reduce(): 对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值
1 | > let p = [{name: "tt", age: 12}, {name: "ttt", age: 14}]; |
String拓展
- startsWith():判断字符是否以…开头
- endsWith()
- repeat(n):将字符串重复n次,并返回新串
- padStart():用于填充字符串,如时间格式化显示。参数1字符串长度,参数2用于填充的字符
- padEnd(maxLength, fillString=’’)
定义基本对象(ES5)
1 | let book = { |
类class
支持继承extends
1 | class Player { |
迭代生成器
注意:fanction后面有一个*
1 | function* countDown(number) { |
迭代器
- 方式一
1 | class PlayerList { |
- 方式二:使用yield
1 | class PlayerList { |
模块化设计
服务器端模块化规范(CommonJs)
- 模块分为单文件模块与包
- 导出:
module.exports = {}
和exports.模块名 = {}
- 导入:
const 接收名称 = require("...")
ES6统一标准
默认导出与默认导入
- 默认导出:
export default {}
, 只能导出一次 - 默认导入:
import 接收名称 from ‘模块标识符’
- 默认导出:
按需导出/导入
- 导出:
export let num = 10
, 可以导出多次 - 导入:
import { num } from '...'
- 导出:
练习
1 | // 定义两个函数 |