Slide 1

Slide 1 text

JavaScript 2016 with ES6

Slide 2

Slide 2 text

ECAMScriptͱ͸ʁ

Slide 3

Slide 3 text

ECMAScript •ECMA InternationalʹΑͬͯඪ४Խ͞Εͨ JavaScriptن֨ •1997೥ॳ൛ •2009೥12݄ʹୈ̑൛ ௨শ ES5 (ES2009) •2015೥6݄ʹୈ̒൛ ௨শ ES6 (ES2015)

Slide 4

Slide 4 text

ECMAScript •ECMA InternationalʹΑͬͯඪ४Խ͞Εͨ JavaScriptن֨ •1997೥ॳ൛ •2009೥12݄ʹୈ̑൛ ௨শ ES5 (ES2009) •2015೥6݄ʹୈ̒൛ ௨শ ES6 (ES2015) Today’s Topic

Slide 5

Slide 5 text

ES5(ECMAScript2009) •strictϞʔυͷಋೖ •JSONϥΠϒϥϦͷαϙʔτ
 ͳͲ…

Slide 6

Slide 6 text

ES5(ECMAScript2009) •strictϞʔυͷಋೖ •JSONϥΠϒϥϦͷαϙʔτ
 ͳͲ… ϝδϟʔϒϥ΢β͸΄΅100%ରԠࡁΈ

Slide 7

Slide 7 text

ES6͸ɺͳʹ͕৽͍͠ʁ

Slide 8

Slide 8 text

ES6ͷ৽ͨͳ࢓༷ 1.class໋ྩͷಋೖͰɺJava/C#ϥΠΫͳΫϥεఆ͕ٛՄೳʹ 2.import / export໋ྩʹΑΔίʔυͷϞδϡʔϧԽ 3.ؔ਺ߏจͷվળ(Ξϩʔؔ਺ɺҾ਺σϑΥϧτ஋ɺՄม௕ Ҿ਺) 4.let / const໋ྩʹΑΔϒϩοΫείʔϓͷಋೖ 5.Map / Set 6.for … of(ΠςϨʔλʔ) 7.δΣωϨʔλʔ 8.Promise
 ͳͲͳͲ…

Slide 9

Slide 9 text

ʲࢀߟʳES6ϒϥ΢βຖͷରԠঢ়گ σεΫτοϓϒϥ΢β ϞόΠϧϒϥ΢β https://kangax.github.io/compat-table/es6/

Slide 10

Slide 10 text

ʲࢀߟʳES6ϒϥ΢βຖͷରԠঢ়گ σεΫτοϓϒϥ΢β ϞόΠϧϒϥ΢β https://kangax.github.io/compat-table/es6/ ES6 → ES5΁ͷτϥϯεύΠϧ

Slide 11

Slide 11 text

•https://babeljs.io/ •ES6→ES5΁ͷτϥϯεύΠϥ •ES6Ͱॻ͍ͨJSϑΝΠϧ͔ΒES5(ES2009)ʹ ରԠͨ͠JSϑΝΠϧΛॻ͖ग़͢
 ˞Ұ෦ରԠ͍ͯ͠ͳ͍ES6ͷػೳ͋Γ

Slide 12

Slide 12 text

ES6ͷத਎

Slide 13

Slide 13 text

1.class class Member { // ίϯετϥΫλʔ͸private constructor(name, age) { this.name = name; this.age = age; } // ϝιου͸͢΂ͯpublic getInfo() { return `I’m ${this.name}. ${this.age} year's old.`; } } //Πϯελϯεੜ੒ var tom = new Member(‘Tom’, 30); //ϝιου࣮ߦ console.log(tom.getInfo()); //-> I’m Tom. 30 year's old.

Slide 14

Slide 14 text

1.class class Member { // ίϯετϥΫλʔ͸private constructor(name, age) { this.name = name; this.age = age; } // ϝιου͸͢΂ͯpublic getInfo() { return `I’m ${this.name}. ${this.age} year's old.`; } } //Πϯελϯεੜ੒ var tom = new Member(‘Tom’, 30); //ϝιου࣮ߦ console.log(tom.getInfo()); //-> I’m Tom. 30 year's old. ҎԼͷػೳ΋ར༻Մೳ w ܧঝ w ήολʔηολʔ HFUTFU w TUBUJDϝιου

Slide 15

Slide 15 text

2.import / export ɹ

Slide 16

Slide 16 text

2.import / export ར༻Մೳͳϒϥ΢βͳ͠

Slide 17

Slide 17 text

2.import / export ར༻Մೳͳϒϥ΢βͳ͠

Slide 18

Slide 18 text

2.import / export ར༻Մೳͳϒϥ΢βͳ͠ ͜ͷ΁Μ͸ ։ൃ؀ڥͷઆ໌ͷ࣌ʹ

Slide 19

Slide 19 text

3.ؔ਺ߏจͷվળ var calcTriangleArea = function(base, height) { // ࡾ֯ܕͷ໘ੵΛܭࢉͯ͠ฦ٫ return base * height / 2 //ఈล × ߴ͞ ÷ 2 } console.log(calcTriangleArea(5, 4) + ‘cᶷ’); //-> 10cᶷ 3-1.Ξϩʔؔ਺ طଘ var calcTriangleArea = (base, height) => { // ࡾ֯ܕͷ໘ੵΛܭࢉͯ͠ฦ٫ return base * height / 2 //ఈล × ߴ͞ ÷ 2 } console.log(calcTriangleArea(5, 4) + ‘cᶷ’); //-> 10cᶷ Ξϩʔؔ਺

Slide 20

Slide 20 text

3.ؔ਺ߏจͷվળ // ԁͷ໘ੵΛٻΊΔ var calcCircleArea = radius => radius * radius * Math.PI; console.log(calcCircleArea(5) + ‘cᶷ’); //-> 78.53981633974483cᶷ 3-1.Ξϩʔؔ਺ var show = () => console.log(‘ݩؾͰ͔͢ʁ’); show(); //-> ݩؾͰ͔͢ʁ Ξϩʔؔ਺(Ҿ਺ͳ͠) Ξϩʔؔ਺(Ҿ਺1ͭ & 1ߦ)

Slide 21

Slide 21 text

3.ؔ਺ߏจͷվળ var calcTriangleArea = function(base = 5, height = 4) { // ࡾ֯ܕͷ໘ੵΛܭࢉͯ͠ฦ٫ return base * height / 2 //ఈล × ߴ͞ ÷ 2 }; console.log(calcTriangleArea() + ‘cᶷ’); //-> 10cᶷ console.log(calcTriangleArea(6) + ‘cᶷ’); //->12cᶷ console.log(calcTriangleArea(,6) + ‘cᶷ’); //-> Τϥʔ 3-2.Ҿ਺ͷσϑΥϧτ஋

Slide 22

Slide 22 text

3.ؔ਺ߏจͷվળ //Ҿ਺Λશͯ߹ࢉͯ͠ฦ٫͢Δ var calcSum = (...nums) => { let sum = 0; for (let n of nums) { sum += n; } return sum; }; console.log(calcSum(1,2,3,4,5,6)); //-> 21 3-3.Մม௕Ҿ਺ ྫ1)

Slide 23

Slide 23 text

4.let / const ͷείʔϓ var scope = “global_scope"; var getValue = function() { var scope = ‘local_scope’; return scope; }; if (true) { var new_scope1 = ‘new_scope1’; } for (var i = 0,len = 3; i < len; i++ ) { var new_scope2 = 'new_scope2'; }; console.log(getValue()); // -> local_scope console.log(scope); // -> global_scope console.log(new_scope1); // -> new_scope1 console.log(new_scope2); // -> new_scope2 طଘͷείʔϓ

Slide 24

Slide 24 text

4.let / const ͷείʔϓ var scope = “global_scope"; var getValue = function() { var scope = ‘local_scope’; return scope; }; if (true) { var new_scope1 = ‘new_scope1’; } for (var i = 0,len = 3; i < len; i++ ) { var new_scope2 = 'new_scope2'; }; console.log(getValue()); // -> local_scope console.log(scope); // -> global_scope console.log(new_scope1); // -> new_scope1 console.log(new_scope2); // -> new_scope2 طଘͷείʔϓ WBSͳ͠ͷએݴ͸ શͯHMPCBMʹͳΔͷͰඇਪ঑ ΤϥʔͱͳΒͳ͍

Slide 25

Slide 25 text

let scope = ‘aaa’; let scope = ‘bbb’; // Τϥʔ 4.let / const ͷείʔϓ if (true) { let new_scope = ‘new_scope’; } console.log(new_scope); // Τϥʔ let ྫ̍) let ྫ2) const scope = ‘aaa’; scope = ‘bbb’; // Τϥʔ const ྫ1)

Slide 26

Slide 26 text

let scope = ‘aaa’; let scope = ‘bbb’; // Τϥʔ 4.let / const ͷείʔϓ if (true) { let new_scope = ‘new_scope’; } console.log(new_scope); // Τϥʔ let ྫ̍) let ྫ2) ϒϩοΫ֎͸Τϥʔ એݴͷॏෳ͸Τϥʔ const scope = ‘aaa’; scope = ‘bbb’; // Τϥʔ const ྫ1) ஋ͷ࠶୅ೖෆՄ +BWBͰ͍͏pOBM جຊ͸const ࠶୅ೖ͕ඞཁʹͳͬͨΒletΛར༻(var͸ඇਪ঑) airbnbϧʔϧ

Slide 27

Slide 27 text

5. Map / Set let m = new Map(); m.set(‘javascript’:’express’); m.set(‘ruby’:’ruby on rails’); m.set(‘python’:’Djungo’); console.log(m.size); //->3 console.log(m.get(‘ruby’)); //->ruby on rails console.log(m.has(‘ruby’)); //->true Map let s = new Set(); s.add(100); s.add(50); s.add(100); for (let item of s) { console.log(item); //->100,50 } Set

Slide 28

Slide 28 text

5. Map / Set let m = new Map(); m.set(‘javascript’:’express’); m.set(‘ruby’:’ruby on rails’); m.set(‘python’:’Djungo’); console.log(m.size); //->3 console.log(m.get(‘ruby’)); //->ruby on rails console.log(m.has(‘ruby’)); //->true Map let s = new Set(); s.add(100); s.add(50); s.add(100); //->100͸ॏෳ for (let item of s) { console.log(item); //->100,50 } Set +BWBͷNBQͱಉ͡ ஋ͷॏෳΛڐ͞ͳ͍

Slide 29

Slide 29 text

6. for … of(ΠςϨʔλʔ) var numberlist = [1,2,3,4]; for (var i = 0, len = numberlist.length; i < len; i++) { console.log(i); //->1,2,3,4 } for const numberlist = [1,2,3,4]; for (const item of numberlist) console.log(item); //->1,2,3,4 } let data_str = “͍͋͏͓͑"; for(let item of data_str) { console.log(item);//->͋ ͍ɹ͏ ͑ ͓ } for of

Slide 30

Slide 30 text

7. δΣωϨʔλʔ let showlog = function* () { // functionͷ్தͰԿճͰ΋ϦλʔϯͰ͖Δ yield '͸͡Ίͯͷ'; yield 'δΣωϨʔλʔ'; yield 'ɻ'; }; // δΣωϨʔλʔ͸ྻڍՄೳͳΦϒδΣΫτΛฦ٫͢Δ for (let item of showlog()) { console.log(item); } δΣωϨʔλʔ

Slide 31

Slide 31 text

8.Promise Promise

Slide 32

Slide 32 text

8.Promise Callbackؔ਺ͷઆ໌͔Β ඞཁͩͱࢥ͏ͷͰผͷػձʹ (௕͘ͳΓͦ͏Ͱ͢͠) Promise

Slide 33

Slide 33 text

The End ͝ࢹௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ