SlideShare a Scribd company logo
ECMAScript 2015: 101
Why we need
ES2015?
The future
IE 6 时代
Chrome 时代
Vue / Angular / React
Node
The degree of ES2015
implementation
ES2015 在现代浏览器的支持程度
• Chrome 54 + 实现了 ES2015 标准的 97%
• Firefox 49 + 实现了 ES2015 标准的 92%
• IE 11 实现了 ES2015 标准的 11%
• Edge 13 + 实现了 ES2015 标准的 83%
ES2015 在 Node 的 V8 引擎支持程度
• v0.10.48 实现了 ES2015 标准的 11%
• v4.3.2 实现了 ES2015 标准的 57%
• v6.8.1 实现了 ES2015 标准的 99%
iOS 10 实现了 100%
!
ES2015 Complier
Babel / Traceur
Babel
• 诞生于 2014/09/28
• 官网:https://babeljs.io
• 最新版本: v6.16.0
• 最多开发者使用的 ES2015 Compiler
Babel Plugins
• arrow-function - es2015-arrow-functions
• es2015 - babel-preset-es2015
• esNext - babel-preset-latest
• react - babel-preset-react
Traceur
• Google 出品的 JavaScript.next Compiler
• 易用:加载几行代码即可
Babel VS Traceur
Babel
• 优点: 支持多种构建环境和开发工具
• 优点:开源社区力量大,有问题很容易解决
• 缺点:只支持预编译
Traceur
• 优点:易用
• 缺点:只有 4% 的开发者使用
• 缺点:只有 Google 一家维护
• 缺点:啥事都没做就要引用 500K+ 的文件
The new feature in
ES2015
• Block Bindings
• Arrow Function
• Generator
• Promise
• Destructuring
Block Bindings
Var Declarations
Let Declarations
真正的块级作用域
The temporal Dead
Zone
if (condition) {
console.log(typeof value); // ReferenceError!
let value = "blue";
}
使用 let/const 代替 var
Arrow Function
JavaScript 的 this
JavaScript 设计缺陷
Fix with bind
Fix with Arrow
Function
本质上是语法糖
Destructuring
Destructuring in Array
使用场景
中间值交换
方法返回多个值
提取JSON数据
导入模块的指定方法
const { SourceMapConsumer, SourceNode }
= require("source-map");
Generator
Iterator
A generator is a function
that returns an iterator.
Promise
实战例子
Chain Promise
Set && Map
新增的两种数据结构
• Set.prototype.size:返回Set实例的成员总数。
• add(value):添加某个值,返回Set结构本身。
• delete(value):删除某个值,返回一个布尔值,表示删除是否成功
• has(value):返回一个布尔值,表示该值是否为Set的成员。
• clear():清除所有成员,没有返回值。
• keys():返回键名的遍历器
• values():返回键值的遍历器
• entries():返回键值对的遍历器
• forEach():使用回调函数遍历每个成员
• Map.prototype.size:返回Map实例的成员总数。
• set(key, value): 设置key所对应的键值,然后返回整个Map结构
• get(key):读取key对应的键值,如果找不到key,返回undefined
• has(key):返回一个布尔值,表示该值是否为Map的成员。
• delete(key):删除某个值,返回一个布尔值,表示删除是否成功。
• clear():清除所有成员,没有返回值。
• keys():返回键名的遍历器
• values():返回键值的遍历器
• entries():返回键值对的遍历器
• forEach():使用回调函数遍历每个成员
Proxy
Proxy可以理解成,在目标对象之前架设
一层“拦截”,外界对该对象的访问,都必
须先通过这层拦截,因此提供了一种机制
,可以对外界的访问进行过滤和改写。
Proxy - JavaScript 的『元编程
』
Class / Module / Symbol
and more …
Learn now
Module
Es2015 101

More Related Content

Similar to Es2015 101

.NET 7 家族新成員: Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員: Microsoft Orleans v7
twMVC
 
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
Edward Kuo
 
Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409zhengyiwuxian
 
Html5
Html5Html5
Html5
cazhfe
 
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)
Will Huang
 
GMIC 2012 - Baidu, Presentation by Mr Wang Jin, 百度副总裁王劲
GMIC 2012 - Baidu, Presentation by Mr Wang Jin, 百度副总裁王劲GMIC 2012 - Baidu, Presentation by Mr Wang Jin, 百度副总裁王劲
GMIC 2012 - Baidu, Presentation by Mr Wang Jin, 百度副总裁王劲Great Wall Club
 
Appcan平台介绍
Appcan平台介绍Appcan平台介绍
Appcan平台介绍36Kr.com
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan
Alan Tsai
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩Wen-Tien Chang
 
Appcan介绍自己的应用开发平台
Appcan介绍自己的应用开发平台Appcan介绍自己的应用开发平台
Appcan介绍自己的应用开发平台MOBINODE
 
Kamigo reviews 20191127
Kamigo reviews 20191127Kamigo reviews 20191127
Kamigo reviews 20191127
Jia Yu Lin
 
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)My own sweet home!
 
Eventmachine Websocket 實戰
Eventmachine Websocket 實戰Eventmachine Websocket 實戰
Eventmachine Websocket 實戰
Mu-Fan Teng
 
2016 CAVEDU物聯網應用發表會 - 開場
2016 CAVEDU物聯網應用發表會 - 開場2016 CAVEDU物聯網應用發表會 - 開場
2016 CAVEDU物聯網應用發表會 - 開場
CAVEDU Education
 
Koubei banquet 26
Koubei banquet 26Koubei banquet 26
Koubei banquet 26Koubei UED
 
Universal windows apps 開發—運用 html 及 java script
Universal windows apps 開發—運用 html 及 java scriptUniversal windows apps 開發—運用 html 及 java script
Universal windows apps 開發—運用 html 及 java script
Ian Chen
 
01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview
Alan Tsai
 
@Connect(); microsoft visual studio vnext & azure
@Connect(); microsoft visual studio vnext & azure@Connect(); microsoft visual studio vnext & azure
@Connect(); microsoft visual studio vnext & azure
Bruce Chen
 
Port android to black berry 10.pptx
Port android to black berry 10.pptxPort android to black berry 10.pptx
Port android to black berry 10.pptx
Simon HSU
 

Similar to Es2015 101 (20)

.NET 7 家族新成員: Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員: Microsoft Orleans v7
 
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
 
Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409
 
Html5
Html5Html5
Html5
 
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)
HTML5 規格最新發展現況 (HTML5 趨勢發展與技術應用論壇)
 
GMIC 2012 - Baidu, Presentation by Mr Wang Jin, 百度副总裁王劲
GMIC 2012 - Baidu, Presentation by Mr Wang Jin, 百度副总裁王劲GMIC 2012 - Baidu, Presentation by Mr Wang Jin, 百度副总裁王劲
GMIC 2012 - Baidu, Presentation by Mr Wang Jin, 百度副总裁王劲
 
Appcan平台介绍
Appcan平台介绍Appcan平台介绍
Appcan平台介绍
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
 
Appcan介绍自己的应用开发平台
Appcan介绍自己的应用开发平台Appcan介绍自己的应用开发平台
Appcan介绍自己的应用开发平台
 
Kamigo reviews 20191127
Kamigo reviews 20191127Kamigo reviews 20191127
Kamigo reviews 20191127
 
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)開放原始碼 Ch2.1   app - oss - oss ide (ver1.2)
開放原始碼 Ch2.1 app - oss - oss ide (ver1.2)
 
Eventmachine Websocket 實戰
Eventmachine Websocket 實戰Eventmachine Websocket 實戰
Eventmachine Websocket 實戰
 
2016 CAVEDU物聯網應用發表會 - 開場
2016 CAVEDU物聯網應用發表會 - 開場2016 CAVEDU物聯網應用發表會 - 開場
2016 CAVEDU物聯網應用發表會 - 開場
 
Koubei banquet 26
Koubei banquet 26Koubei banquet 26
Koubei banquet 26
 
Universal windows apps 開發—運用 html 及 java script
Universal windows apps 開發—運用 html 及 java scriptUniversal windows apps 開發—運用 html 及 java script
Universal windows apps 開發—運用 html 及 java script
 
01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview
 
@Connect(); microsoft visual studio vnext & azure
@Connect(); microsoft visual studio vnext & azure@Connect(); microsoft visual studio vnext & azure
@Connect(); microsoft visual studio vnext & azure
 
Port android to black berry 10.pptx
Port android to black berry 10.pptxPort android to black berry 10.pptx
Port android to black berry 10.pptx
 

Es2015 101