Slide 1

Slide 1 text

tc39/ecma262 ஌ͬͯ·͔͢? Meguro.es #1 in Drecom HIRAKI Satoru / Layzie

Slide 2

Slide 2 text

Agenda

Slide 3

Slide 3 text

1. ࣗݾ঺հ 2. tc39/ecma262ͱ͍͏ϦϙδτϦ͸ͳΜͳͷ ͔ 3. tc39/ecma262Ͱ஫໨ͷ࢓༷

Slide 4

Slide 4 text

ࣗݾ঺հ

Slide 5

Slide 5 text

ฏ໦ ૱ ωοτͰ͸Layzie Ͱग़຅ͯ͠·͢

Slide 6

Slide 6 text

https://github.com/Layzie

Slide 7

Slide 7 text

http://layzie.hatenablog.com/

Slide 8

Slide 8 text

ڞஶͰࣥච͠·ͨ͠

Slide 9

Slide 9 text

Frontend WeeklyͷΩϡϨʔλʔʹͳΓ·ͨ͠ https://frontendweekly.tokyo/

Slide 10

Slide 10 text

࠷ۙौ୩ͷ྘ͷձ͔ࣾΒస৬͠·ͨ͠ σβΠφʔɾΤϯδχΞઈࢍืू! http://www.medley.jp/

Slide 11

Slide 11 text

tc39/ecma262ͱ͍͏ ϦϙδτϦ͸Կ?

Slide 12

Slide 12 text

ͬ͘͟Γͱͨ͠ܦҢ ࣗ෼͸ຊ֨తʹ৘ใ௥ͬͯͨΘ͚͡Όͳ͍ͷͰɺ ͋͘·Ͱ΋ͬ͘͟Γ

Slide 13

Slide 13 text

ECMASCript2015 ͷ࢓༷͸ ݩʑES WikiͰެ։ ͞Ε͍ͯͨ

Slide 14

Slide 14 text

ࠓ೥11݄ɺMozillaओ࠵ͷ ViewSource Conference಺ͷ Discussion: JavaScript Todayͱ͍͏ηογϣϯ಺ ͰΞοϓσʔτͷաఔΛ Φʔϓϯʹ͢Δͱ͍͏ൃ ද͕͞ΕΔ

Slide 15

Slide 15 text

ͦ͜Ͱɺ͜ͷϦϙδτϦ ͕࢖ΘΕͯ࢓༷ࡦఆ͕͞ ΕΔΑ͏ʹͳΔ ϦϙδτϦࣗମ͸2014೥4݄ʹ͸ଘ ࡏ͍ͯͨ͠

Slide 16

Slide 16 text

ࠓ·ͰΑΓ΋͞Βʹ ࢓༷ࡦఆ͕ΦʔϓϯʹͳΓ·ͨ͠

Slide 17

Slide 17 text

࠷৽ͷ࢓༷͸ͪ͜ΒͰ֬ೝ http://tc39.github.io/ecma262/

Slide 18

Slide 18 text

ٞ࿦͸ओʹ͜ͷES discussͱ GitHub IssueͰߦΘΕͯΔ

Slide 19

Slide 19 text

࢓༷ͷεςʔλεͷઆ໌͸ͪ͜Β https://tc39.github.io/process-document/

Slide 20

Slide 20 text

࢓༷ͷεςʔλεͷࡶͳઆ໌ Stage0 δϟετΞΠσΟΞɻΈΜͳ޷͖ͳ࢓༷ೖΕΑ͏ͥ ͷஈ֊ɻ Stage4 ࢓༷͸׬੒ͯ͠Δ্ʹɺผʑͷ2ͭͷVMͰಈ͔ͤ Δஈ֊ɻ

Slide 21

Slide 21 text

ಠஅͰ঺հ͢Δ ஫໨ͷ࢓༷

Slide 22

Slide 22 text

Array.prototype.includes()

Slide 23

Slide 23 text

Array.prototype.includes() ͋Γͦ͏Ͱແ͔ͬͨ͜ͷϝιουɺݱࡏStage4 ͳΜͰɺ΄΅ES2016ೖΓ͢Δ͸ͣ…

Slide 24

Slide 24 text

Array.prototype.includes() Array.prototype.indexOf()͕͜ͷ৔߹࢖ΘΕ Δ͜ͱ͕ଟ͔͚ͬͨͲɺNaN͸൑ఆͯ͘͠Εͳ͍ ΑͶ͍ͬͯ͏ཧ༝ [1, 2, 3].includes(2) // true [1, 2, 3].includes(4) // false [1, 2, NaN].includes(NaN) // true [NaN].indexOf(NaN) // -1

Slide 25

Slide 25 text

SIMD

Slide 26

Slide 26 text

SIMD WebGL΍CanvasɺCryptoͳͲΛߴ଎Խ͢Δฒ ྻԋࢉͷͨΊͷ৽͍͠σʔλܕ࢓༷ɻ ·ͩStage3Ͱ͕͢ɺGoogleɺMozillaɺMSɺ IntelͳΜ͔͕ؔΘͬͯΔͷͰϒϥ΢βʹೖΔͷૣ ͦ͏ɻ

Slide 27

Slide 27 text

SIMD ৄ͘͠͸MDN΁ https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/SIMD

Slide 28

Slide 28 text

Trailing commas in function parameter lists and calls

Slide 29

Slide 29 text

Trailing commas in function parameter lists and calls JavaScriptॻ͘ͷʹෆศͩΖ!ͱࢥͬͨͷ͔෼͔ Γ·ͤΜ͕ɺ͔֬ʹ͜͏ॻ͚ΔͱศརͰ͸͋Δ ͔…ͱ͍͏࢓༷ɻStage3ɻ ཁ͸ԾҾ਺ͷ࠷ޙʹέπΧϯϚೖΕͯ΋ಈ͘Α͏ ʹ͠Α͏ͥ!ͱ͍͏΋ͷɻ

Slide 30

Slide 30 text

Trailing commas in function parameter lists and calls function hoge( foo, bar, baz, ) {/*...*/} hoge( 'foo', 'bar', 'baz', ) {/*...*/}

Slide 31

Slide 31 text

ECMAScript Function Bind Syntax

Slide 32

Slide 32 text

ECMAScript Function Bind Syntax thisͷόΠϯυΊΜͲ͔ͤ͑͘Β::Ͱग़དྷΔΑ͏ ʹ͠Α͏͍ͥͬͯ͏࢓༷ɻStage0

Slide 33

Slide 33 text

ECMAScript Function Bind Syntax ैདྷ͸͜Μͳॻ͖ํͩͬͨ΋ͷ͕… var hasOwnProp = Object.prototype.hasOwnProperty; var obj = { x: 100 }; hasOwnProp.call(obj, "x");

Slide 34

Slide 34 text

ECMAScript Function Bind Syntax ͜͏Ͱ͖Ε͹ྑ͍Μ͡Όͳ͍?ͱ͍͏΋ͷΒ ͍͠ var hasOwnProp = Object.prototype.hasOwnProperty; var obj = { x: 100 }; obj::hasOwnProperty(key);

Slide 35

Slide 35 text

Encapsulated private state for objects

Slide 36

Slide 36 text

Encapsulated private state for objects Class಺Ͱ͔͠࢖͑ͳ͍privateঢ়ଶΛ࡞Γ·͠ ΐ͏ͱ͍͏ఏҊɻStage0ɻ ͓ݻ͍ݴޠʹͳͬͯ͘Δ͔?Yehuda Katz͞Μ͕ ؤுͬͯΔΑ͏Ͱ͢ɻ

Slide 37

Slide 37 text

Encapsulated private state for objects class DataObj { private #data1; constructor(d) { #data1 = d; } sameData(another) { return #data1 === another.#data1 } }; let obj1= new DataObj(1); let obj2 = new DataObj(2); console.log(obj1.sameData(obj2)); // false consloe.log(obj1.sameData(new DataObj(1))); // true

Slide 38

Slide 38 text

64-Bit Integer Operations

Slide 39

Slide 39 text

64-Bit Integer Operations JavaScriptͷ͓෕͞Μ͜ͱBrendan Eich͞Μ͕ 64bitͰܭࢉ͠Α͏ͥ!ͬͯग़ͯ͠ΔఏҊɻ ͿͬͪΌ͚͜͜Βลྑ͘෼͔Γ·ͤΜɻ Stage0ɻ

Slide 40

Slide 40 text

64-Bit Integer Operations ·Μ·ൈਮɻ // return the high 32 bit part of the 64 bit addition of (hi0, lo0) and (hi1, lo1) Math.iaddh(lo0, hi0, lo1, hi1) // return the high 32 bit part of the 64 bit subtraction of (hi0, lo0) and (hi1, lo1) Math.isubh(lo0, hi0, lo1, hi1) // return the high 32 bit part of the signed 64 bit product of the 32 bit numbers a and b Math.imulh(a, b) // return the high 32 bit part of the unsigned 64 bit product of the 32 bit numbers a and b Math.umulh(a, b)

Slide 41

Slide 41 text

΢Υονͱ͔ίϯτϦϏϡʔτ͢Δͱ ָ͍͔͠΋͠Ε·ͤΜͶ!!

Slide 42

Slide 42 text

Thank you ;)