1、ECMAScript是什么? 和 JavaScript 有着怎样的关联?
1996 年 11 月,Netscape 制造了javascript并将其提交给了规范化构造 ECMA,次年,ECMA 宣布 262 号规范文件(ECMA-262)的初版,划定了浏览器脚本言语的规范,并将这类言语称为 ECMAScript,这个版本就是 1.0 版。
ECMAScript更新了6个版本,最新正式版 ES6(ECMAScript 6)是 JavaScript 言语的下一代规范,早已在 2015 年 6 月正式宣布。要问两者之间的关联,可以用 ECMAScript 是 JavaScript 言语的国际规范,JavaScript 是 ECMAScript 的完成这句话来描述。
说的通俗易懂点:如果说设计图是规范,盖好的屋子是完成,那末 ECMAScript就是设计图,JavaScript是盖好的屋子。
2、汗青进化历程
感悟:长路漫漫,吾将高低而求索!
3、ES6兼容性剖析
3.1 横向对照
(1)桌面端浏览器对ES2015的支撑状况
- Chrome:51 版起便可以支撑 97% 的 ES6 新特征。
- Firefox:53 版起便可以支撑 97% 的 ES6 新特征。
- Safari:10 版起便可以支撑 99% 的 ES6 新特征。
- IE:Edge 15可以支撑 96% 的 ES6 新特征。Edge 14 可以支撑 93% 的 ES6 新特征。(IE7~11 基本不支撑 ES6)
(2)挪动端浏览器对ES2015的支撑状况
- iOS:10.0 版起便可以支撑 99% 的 ES6 新特征。
- Android:基本不支撑 ES6 新特征(5.1 仅支撑 25%)
(3)服务器对ES2015的支撑状况
- Node.js:6.5 版起便可以支撑 97% 的 ES6 新特征。(6.0 支撑 92%)
3.2 纵向对照
援用地点 https://caniuse.com/#search=es6
援用地点 https://caniuse.com/#search=es5
结论:如今的Chrome浏览器对ES6的支撑已做的相称棒了,然则有些低版本的浏览器照样不支撑ES6的语法,比方IE8及其以下,说的就是你,不必再疑心。
4、为何进修ES6?
如果把前端开辟比作成伐木头,那末ES3是斧头,ES5是钢锯,而ES6则是电锯,跟着前端项目日益庞杂和挪动端愈来愈主流,Vue、React、Angular等手艺栈的大行其道,ES6 成为前端开辟人员必需控制的基本技能。控制了ES6 不单单议可以越发便利的开辟、大幅度的进步工作效率,更可以为进修Vue、React、Angular等手艺栈以至是NodeJS打下坚固的基本。
说的这么666,那末……
4.1 运用ES6编程,究竟幸亏那里?
例一:
在ES5中,我们不能不运用以下要领来示意多行字符串:
var str ='<div id="ul1">'+
'<li>青年问禅师:</li>'+
'<li>“巨匠整天答疑解惑、普度众生,怎样不为俗物所扰,埋头修行?”</li>'+
'<li>禅师微微一笑:“我每天晚上睡觉前都关机!”</li>'+
'</div>';
然而在ES6中,仅仅用反引号就可以处理了:
var str = `<div id="ul1">
<li>青年问禅师:</li>
<li>“巨匠整天答疑解惑、普度众生,怎样不为俗物所扰,埋头修行?”</li>
<li>禅师微微一笑:“我每天晚上睡觉前都关机!”</li>
</div>`;
例二:
在ES5中完成对象拷贝结果:
var createAssigner = function(keysFunc, undefinedOnly) {
return function(obj) {
var length = arguments.length;
if (length < 2 || obj == null) return obj;
for (var index = 1; index < length; index++) {
var source = arguments[index],
keys = keysFunc(source),
l = keys.length;
for (var i = 0; i < l; i++) {
var key = keys[i];
if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key];
}
}
return obj;
};
};
var allKeys = function(obj){
var keys = [];
for(var key in obj) keys.push(key);
return keys;
}
var extend = createAssigner(allKeys);
extend({a:111},{b:222});
在ES6中完成对象拷贝结果:
Object.assign({a:111},{b:222});
一样完成一个对象拷贝结果,用ES5写须要20多行代码,然则用ES6写,只须要 1 行代码!!!
固然,ES6另有许多壮大的新特征等着我们去进修,ES6引入的新特征是ES5无法比拟的!
4.2 ES6的新功用简介
ES6过渡版本,ES4激进被废掉,ES5遗留许多题目,而ES6 兼容性还好,代码简约,易用。
(1)块级作用域绑定
1 let声明
2 const声明Constant Declarations
3 轮回中的块级绑定
4 轮回中的函数
(2)函数的新增特征
1 带默许参数的函数
2 默许参数对 arguments 对象的影响
3 默许参数表达式 Default Parameter Expressions
4 未定名参数题目
5 函数中的扩大运算符
(3)全新的函数箭头函数
1 箭头函数语法
2 运用箭头函数完成函数自实行
3 箭头函数中无this绑定No this Binding
4 无arguments绑定
(4)对象功用的扩大
1 对象种别
2 对象字面量的语法扩大
2.1 简写的属性初始化
2.2 简写的要领声明
2.3 在字面量中动态盘算属性名
3 新增的要领
3.1 Objectis
3.2 Object assign
(5)字符串功用的加强
1 查找子字符串
2 repeat要领
3 字符串模板字面量
3.1 基本语法
3.2 多行字符串
3.3 字符串置换
3.4 模板标签
3.4.1 什么是模板标签
3.4.2 定义模板标签
(6)解构
1 解构的实用性
2 对象解构
2.1 对象解构的基本形式
2.2 解构赋值表达式
2.3 对象解构时的默许值
2.4 赋值给差别的变量名
3 数组解构
3.1 数组解构基本语法
3.2 解构表达式
(7)新的基本范例Symbol
1 建立Symbol
2 辨认Symbol
3 Symbol作为属性名
4 Symbol属性名的遍历
5 Symbolfor字符串和SymbolkeyForsymbol范例的值
(8)Set数据结构
1 建立Set和并增加元素
2 Set中不能增加反复元素
3 运用数组初始化Set
4 推断一个值是不是在Set中
5 移除Set中的元素
6 遍历Set
7 将Set转换为数组
(9)Map数据结构
1 建立Map对象和Map的基本的存取操纵
2 Map与Set相似的3个要领
3 初始化Map
4 Map的forEach要领
(10)迭代器和forof轮回
1 轮回题目
2 什么是迭代器
3 生成器函数
4 生成器函数表达式
5 可迭代范例和for-of迭代轮回
6 接见可迭代范例的默许迭代器
7 自定义可迭代范例
(11)类
1 ES5之前的模仿的类
2 ES6中基本的类声明
2 匿名类表达式
3 签字类表达式
4 作为一等国民的范例
5 动态盘算类成员的定名
6 静态成员
7 ES6中的继续
7.1 继续的基本写法
7.2 在子类中屏障父类的要领
7.3 静态要领也可以继续
运用ES6以后,可以勤俭许多开辟时候,用来。。。
5、 怎样运用ES6的新特征,又能保证浏览器的兼容?
针对 ES6 的兼容性题目,许多团队为此开辟出了多种语法剖析转换东西,把我们写的 ES6 语法转换成 ES5,相称于在 ES6 和浏览器之间做了一个翻译官。比较通用的东西计划有 babel,jsx,traceur,es6-shim 等。下一节,我们将详细解说该部份的学问。
6、总结
经由过程本节,我们了解了ECMAScript的生长进化史,以及ES6的一些新特征。
跟着JavaScript应用领域愈来愈广, 以及ES6 文雅的编程作风和形式、壮大的功用,愈来愈多的顺序正在运用ES6更好地完成。
是不是是对进修ES6充满了动力?OK,下节课最先,我们就讲讲怎样搭建ES6的开辟环境搭建,举行ES6开辟。