ECMAScript 6 — будущее JavaScript
-
Upload
alexey-simonenko -
Category
Technology
-
view
374 -
download
3
description
Transcript of ECMAScript 6 — будущее JavaScript
![Page 1: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/1.jpg)
Алексей Симоненкотехнический директор Serenity
Будущее JavaScript
2013
![Page 2: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/2.jpg)
Раньше
![Page 3: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/3.jpg)
Сейчас
![Page 4: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/4.jpg)
12 лет между последними большими изменениями спецификации JavaScript
![Page 5: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/5.jpg)
12 лет между последними большими изменениями спецификации JavaScript
Новые методы базовых объектов
ObjectStringArrayNumberMath
![Page 6: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/6.jpg)
Новые методы базовых объектовString
String.fromCodePoint
String.prototype.containsString.prototype.startsWithString.prototype.endsWithString.prototype.repeatString.prototype.codePointAtString.prototype.toArray
![Page 7: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/7.jpg)
Новые методы базовых объектовString
'too much'.contains('too');// true
'too much'.startsWith('t');// true
'too much'.endsWith('t');// false
18
es6-shim
ECMAScript-6
![Page 8: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/8.jpg)
Новые методы базовых объектовObject
Object.isObject.assignObject.mixinObject.getOwnPropertyDescriptorsObject.getPropertyDescriptorObject.getPropertyNamesObject.setPrototypeOf
![Page 9: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/9.jpg)
Новые методы базовых объектовObject
Object.is(NaN, NaN);// true
23
19
15
es6-shim
ECMAScript-6
![Page 10: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/10.jpg)
Новые методы базовых объектовObject
Object.assign({a: 1, b: 3}, {b: 2, c: 3});// {a: 1, b: 2, c: 3}
Object.is(NaN, NaN);// true
23
19
15
es6-shim
ECMAScript-6
![Page 11: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/11.jpg)
Новые методы базовых объектовArray
Array.fromArray.of
Array.prototype.findArray.prototype.findIndexArray.prototype.fill
![Page 12: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/12.jpg)
Новые методы базовых объектовArray
[1, 3, 15, 7, 15, 23].find(function(item) { return item / 3 === 5;});
// 15
[1, 3, 15, 7, 15, 23].findIndex(function(item) { return item / 3 === 5;});
// 2
25
30
es6-shim
![Page 13: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/13.jpg)
Новые методы базовых объектовArray
Нет метода Array.prototype.unique()
![Page 14: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/14.jpg)
Новые методы базовых объектовNumber
Number.isNaNNumber.isFiniteNumber.isIntegerNumber.toInteger
Number.prototype.clz
![Page 15: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/15.jpg)
Новые методы базовых объектовMath
Math.signMath.imulMath.log1pMath.log2Math.log10Math.expm1Math.froundMath.hypot
Math.truncMath.coshMath.sinhMath.tanhMath.acoshMath.asinhMath.atanh
![Page 16: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/16.jpg)
Область видимости
![Page 17: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/17.jpg)
Область видимостиlet
var tag = '#wstdays';
if (true) { let tag = '#404fest';}
11
18
24
google traceur
es6ify
![Page 18: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/18.jpg)
Область видимостиlet
var tag = '#wstdays';
if (true) { let tag = '#404fest'; console.log(tag); // "#404fest"}
console.log(tag); // "#wstdays"
11
18
24
google traceur
es6ify
![Page 19: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/19.jpg)
Область видимостиconst
const a = 10;
11
18
24
12
6
google traceur
![Page 20: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/20.jpg)
Область видимостиconst
const a = 10;
a = 15;// SyntaxError: Assignment to constant variable.
11
18
24
12
6
google traceur
![Page 21: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/21.jpg)
Область видимостиconst
const a = 10;
a = 15;// SyntaxError: Assignment to constant variable.
var a = 15;// SyntaxError: Variable 'a' has already been declared
11
18
24
12
6
google traceur
![Page 22: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/22.jpg)
Область видимостиconst
var a = 15;
if (true) { const a = 10; console.log(a); // 10}
console.log(a); // 15
18
11
24
12
6
google traceur
![Page 23: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/23.jpg)
Коллекции
![Page 24: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/24.jpg)
КоллекцииMap
let data = new Map();
data.set('key', 100);data.set(666, true);data.set(undefined, 'some text');
11
18
29
es6-shim
ECMAScript-6
harmony-collections
![Page 25: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/25.jpg)
КоллекцииMap
let data = new Map();
data.set('key', 100);data.set(666, true);data.set(undefined, 'some text');
let fn = function() { console.log('inside?'); }data.set(fn, 'function key');
11
18
29
es6-shim
ECMAScript-6
harmony-collections
![Page 26: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/26.jpg)
КоллекцииMap
let data = new Map();
data.set('key', 100);data.set(666, true);data.set(undefined, 'some text');
let fn = function() { console.log('inside?'); }data.set(fn, 'function key');
data.has('keys'); // falsedata.has(undefined); // true
11
18
29
es6-shim
ECMAScript-6
harmony-collections
![Page 27: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/27.jpg)
КоллекцииMap
let data = new Map();
data.set('key', 100);data.set(666, true);data.set(undefined, 'some text');
let fn = function() { console.log('inside?'); }data.set(fn, 'function key');
data.has('keys'); // falsedata.has(undefined); // true
data.delete(undefined);data.has(undefined); // false
11
18
29
es6-shim
ECMAScript-6
harmony-collections
![Page 28: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/28.jpg)
КоллекцииMap
let data = new Map();
data.set('key', 100);data.set(666, true);data.set(undefined, 'some text');
let fn = function() { console.log('inside?'); }data.set(fn, 'function key');
data.has('keys'); // falsedata.has(undefined); // true
data.delete(undefined);data.has(undefined); // false
data.get(fn); // "function key"
11
18
29
es6-shim
ECMAScript-6
harmony-collections
![Page 29: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/29.jpg)
КоллекцииSet
let data = new Set([1, 3, 5, 3]);
11
24
29
es6-shim
ECMAScript-6
harmony-collections
![Page 30: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/30.jpg)
КоллекцииSet
let data = new Set([1, 3, 5, 3]);
data.add(3);data.add(7);
11
24
29
es6-shim
ECMAScript-6
harmony-collections
![Page 31: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/31.jpg)
КоллекцииSet
let data = new Set([1, 3, 5, 3]);
data.add(3);data.add(7);
data.has(3); // truedata.has(9); // false
11
24
29
es6-shim
ECMAScript-6
harmony-collections
![Page 32: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/32.jpg)
КоллекцииSet
let data = new Set([1, 3, 5, 3]);
data.add(3);data.add(7);
data.has(3); // truedata.has(9); // false
data.delete(3);data.has(3); // false
11
24
29
es6-shim
ECMAScript-6
harmony-collections
![Page 33: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/33.jpg)
Коллекцииfor-of
let tags = ['#404fest', '#wstdays', '#dconf'];
for (let tag in tags) { console.log(tag);}
// 0, 1, 2
13
google traceur
es6ify
![Page 34: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/34.jpg)
Коллекцииfor-of
let tags = ['#404fest', '#wstdays', '#dconf'];
for (let tag in tags) { console.log(tag);}
// 0, 1, 2
for (let tag of tags) { console.log(tag);}
// "#404fest", "#wstdays", "#dconf"
13
google traceur
es6ify
![Page 35: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/35.jpg)
Коллекцииfor-of
let tags = new Set([ '#404fest', '#wstdays', '#404fest', '#dconf']);
for (let tag of tags) { console.log(tag);}
// "#404fest", "#wstdays", "#dconf"
24
google traceur
es6ify
![Page 36: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/36.jpg)
Коллекцииfor-of
let data = new Map();
data.set('404fest', {'involve': true, 'speaker': true});data.set('wstdays', {'involve': false, 'speaker': false});data.set('dconf', {'involve': true, 'speaker': false});
for (let conf of data) { console.log(conf);}
// ["404fest", {"involve": true, "speaker": true}]// ["wstdays", {"involve": false, "speaker": false}]// ["dconf", {"involve": true, "speaker": false}]
18
google traceur
es6ify
![Page 37: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/37.jpg)
КоллекцииWeakMap
let data = new WeakMap();let element = document.querySelector('footer');
data.set(element, 'some text');
11
23
29
harmony-collections
![Page 38: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/38.jpg)
КоллекцииWeakMap
let data = new WeakMap();let element = document.querySelector('footer');
data.set(element, 'some text');
data.has(element); // truedata.get(element); // "some text"
11
23
29
harmony-collections
![Page 39: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/39.jpg)
КоллекцииWeakMap
let data = new WeakMap();let element = document.querySelector('footer');
data.set(element, 'some text');
data.has(element); // truedata.get(element); // "some text"
element = null;data.has(element); // false
11
23
29
harmony-collections
![Page 40: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/40.jpg)
Странные конструкции
![Page 41: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/41.jpg)
let data = [10, 20, 30];let [a, b, c] = data;
// a = 10, b = 20, c = 30
Странные конструкцииDestructuring assignment 12
google traceur
es6ify
![Page 42: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/42.jpg)
let data = [10, 20, 30];let [a, b, c] = data;
// a = 10, b = 20, c = 30
let a = 10;let b = 20;
[a, b] = [b, a];
// a = 20, b = 10
Странные конструкцииDestructuring assignment 12
google traceur
es6ify
![Page 43: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/43.jpg)
let [a, [[b], c]] = [10, [[20], 30]];
// a = 10, b = 20, c = 30
Странные конструкцииDestructuring assignment 12
google traceur
es6ify
![Page 44: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/44.jpg)
let [a, [[b], c]] = [10, [[20], 30]];
// a = 10, b = 20, c = 30
[, month, day, year] = Date().split(' ');
// month = "Oct", day = "13", year = "2013"
Странные конструкцииDestructuring assignment 12
google traceur
es6ify
![Page 45: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/45.jpg)
let data = {a: 10, b: 20, c: 30};let {a, b, c} = data;
// a = 10, b = 20, c = 30
Странные конструкцииDestructuring assignment 12
google traceur
es6ify
![Page 46: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/46.jpg)
let data = {a: 10, b: 20, c: 30};let {a, b, c} = data;
// a = 10, b = 20, c = 30
let {parse, stringify} = JSON;
Странные конструкцииDestructuring assignment 12
google traceur
es6ify
![Page 47: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/47.jpg)
function today() { return { d: 13, m: 9, y: 2013 };}
let {m: month, y: year} = today();
// month = 9, year = 2013
Странные конструкцииDestructuring assignment 12
google traceur
es6ify
![Page 48: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/48.jpg)
let name = 'Alena';let email = '[email protected]';
let profile = {'name': name, 'email': email};
Странные конструкцииObject literal property value shorthand
google traceur
![Page 49: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/49.jpg)
let name = 'Alena';let email = '[email protected]';
let profile = {'name': name, 'email': email};
let profile = {name, email};
// {"name": "Alena", "email": "[email protected]"}
Странные конструкцииObject literal property value shorthand
google traceur
![Page 50: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/50.jpg)
let data = new Map();
data.set('404fest', {'involve': true, 'speaker': true});data.set('wstdays', {'involve': false, 'speaker': false});data.set('dconf', {'involve': true, 'speaker': false});
for (let [name, {involve}] of data) { console.log(name, involve);}
// "404fest", true// "wstdays", false// "dconf", true
Странные конструкции
![Page 51: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/51.jpg)
let params = [2013, 9, 13, 15, 30];let date = new Date(...params);
// Sun Oct 13 2013 15:30:00 GMT+0400 (MSK)
Странные конструкцииSpread operator 16
google traceur
es6ify
![Page 52: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/52.jpg)
let params = [2013, 9, 13, 15, 30];let date = new Date(...params);
// Sun Oct 13 2013 15:30:00 GMT+0400 (MSK)
let speak = ['#404fest', '#dconf'];let tags = ['#fronteers13', ...speak, '#wstdays'];
// ["#fronteers13", "#404fest", "#dconf", "#wstdays"]
Странные конструкцииSpread operator 16
google traceur
es6ify
![Page 53: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/53.jpg)
function elastic(key, ...items) { console.log(items);}
elastic('tags', '#404fest', '#dconf', '#wstdays');
// ["#404fest", "#dconf", "#wstdays"]
Странные конструкцииRest parameter 16
google traceur
es6ify
![Page 54: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/54.jpg)
Странные конструкции
Нет метода Array.prototype.unique()?
Сделаем его сами
![Page 55: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/55.jpg)
let data = [ 10, 20, 10, 35, 'S', 'Y', 'S', 35, 10, 'S'];
let unique = [...new Set(data)];
// [10, 20, 35, "S", "Y"]
Странные конструкции
![Page 56: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/56.jpg)
Функции
6 000 000 °
![Page 57: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/57.jpg)
ФункцииDefault argument
function fn(a, b = false, c = 'world') { console.log(a, b, c);}
fn(10);// a = 10, b = false, c = "world"
16
google traceur
es6ify
![Page 58: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/58.jpg)
ФункцииDefault argument
function fn(a, b = false, c = 'world') { console.log(a, b, c);}
fn(10);// a = 10, b = false, c = "world"
fn(10, 'world', null);// a = 10, b = "world", c = null
16
google traceur
es6ify
![Page 59: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/59.jpg)
ФункцииDefault argument
function fn(a, b = false, c = 'world') { console.log(a, b, c);}
fn(10);// a = 10, b = false, c = "world"
fn(10, 'world', undefined);// a = 10, b = "world", c = "world"
fn(10, 'world', null);// a = 10, b = "world", c = null
16
google traceur
es6ify
![Page 60: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/60.jpg)
ФункцииDefault argument
function fn(that = this) { setTimeout(function() { console.log(that); }, 100);}
16
google traceur
es6ify
![Page 61: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/61.jpg)
ФункцииArrow function
[1, 3, 15, 7, 15, 23].find(function(item) { return item / 3 === 5;});
23
es6ify
harmonizr
![Page 62: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/62.jpg)
ФункцииArrow function
[1, 3, 15, 7, 15, 23].find(item => item / 3 === 5);
[1, 3, 15, 7, 15, 23].find(function(item) { return item / 3 === 5;});
23
es6ify
harmonizr
![Page 63: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/63.jpg)
ФункцииArrow function
[1, 3, 15, 7, 15, 23].find(item => { let test = item / 3; return test === 5;});
[1, 3, 15, 7, 15, 23].find(item => item / 3 === 5);
[1, 3, 15, 7, 15, 23].find(function(item) { return item / 3 === 5;});
23
es6ify
harmonizr
![Page 64: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/64.jpg)
Генераторы
![Page 65: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/65.jpg)
Генераторы
function* compute(degree, max) { var a = 1;
for (let i = 0; i < max; i++) { yield a; a = a * degree; }}
let gen = compute(2, 3);
26
29
google traceur
es6ify
![Page 66: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/66.jpg)
Генераторы
function* compute(degree, max) { var a = 1;
for (let i = 0; i < max; i++) { yield a; a = a * degree; }}
let gen = compute(2, 3);
gen.next(); // { value: 1, done: false }gen.next(); // { value: 2, done: false }gen.next(); // { value: 4, done: false }
26
29
google traceur
es6ify
![Page 67: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/67.jpg)
Генераторы
function* compute(degree, max) { var a = 1;
for (let i = 0; i < max; i++) { yield a; a = a * degree; }}
let gen = compute(2, 3);
gen.next(); // { value: 1, done: false }gen.next(); // { value: 2, done: false }gen.next(); // { value: 4, done: false }
gen.next(); // { value: undefined, done: true }
26
29
google traceur
es6ify
![Page 68: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/68.jpg)
Генераторы
function* compute(degree, max) { var a = 1;
for (let i = 0; i < max; i++) { yield a; a = a * degree; }}
for (let degree of compute(2, 5)) { console.log(degree);}
// 1, 2, 4, 8, 16
26
29
google traceur
es6ify
![Page 69: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/69.jpg)
Генераторы
function* seq(a) { yield a + 5;
let b = yield null; return a + b;}
let gen = seq(5);
26
29
google traceur
es6ify
![Page 70: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/70.jpg)
Генераторы
function* seq(a) { yield a + 5;
let b = yield null; return a + b;}
let gen = seq(5);
gen.next().value; // 10
26
29
google traceur
es6ify
![Page 71: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/71.jpg)
Генераторы
function* seq(a) { yield a + 5;
let b = yield null; return a + b;}
let gen = seq(5);
gen.next().value; // 10
gen.next().value; // null
26
29
google traceur
es6ify
![Page 72: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/72.jpg)
Генераторы
function* seq(a) { yield a + 5;
let b = yield null; return a + b;}
let gen = seq(5);
gen.next().value; // 10
gen.next().value; // null
gen.next(8).value; // 13
26
29
google traceur
es6ify
![Page 73: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/73.jpg)
Классы
![Page 74: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/74.jpg)
Классы
class Employee { constructor(title) { this.title = title; }
who() { console.log(this.title); }}
google traceur
es6ify
harmonizr
![Page 75: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/75.jpg)
Классы
class Employee { constructor(title) { this.title = title; }
who() { console.log(this.title); }}
let ryan = new Employee('Райан Стоун');ryan.who();
// Райан Стоун
google traceur
es6ify
harmonizr
![Page 76: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/76.jpg)
Классы
class Chief extends Employee { constructor(firstname, surname, role) { super(firstname + ' ' + surname); this.role = role; }
fire(person) { person.dismiss(); }}
google traceur
es6ify
harmonizr
![Page 77: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/77.jpg)
Классы
class Chief extends Employee { constructor(firstname, surname, role) { super(firstname + ' ' + surname); this.role = role; }
fire(person) { person.dismiss(); }}
let mat = new Chief('Мэтт', 'Ковальски', 'owner');mat.who();
// Мэтт Ковальски
google traceur
es6ify
harmonizr
![Page 78: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/78.jpg)
Ответственный за поддержку стандартов
![Page 79: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/79.jpg)
Ответственный за поддержку стандартов
letconstMapSet
WeakMap
![Page 80: ECMAScript 6 — будущее JavaScript](https://reader033.fdocuments.net/reader033/viewer/2022061204/547ec52e5806b5a95e8b46ec/html5/thumbnails/80.jpg)
simonenko simonenko simonenko.su
Спасибо.