Slide 1

Slide 1 text

tc39_study (throw_expressions) (Richer_Keys) (Class_Access_Expressions)

Slide 2

Slide 2 text

Name !CSO 5BLFUPTIJ"POP੨໺݈ར Occupation 'SPOUFOE%FWFMPQFS1SPEVDU0XOFS Company $ZCFSBHFOU"EUFDI4UVEJP"*.FTTFOHFS OSS $POUSJCVUPSPG7 About IUUQJOGPCODI

Slide 3

Slide 3 text

5ISPXFYQSFTTJPO

Slide 4

Slide 4 text

8IBUJTUISPXFYQSFTTJPO 5ISPXΛFYQSFTTJPO͔͠ॻ͚ͳ͍৔ॴͰ΋ॻ͚ΔΑ͏ʹͨ͠

Slide 5

Slide 5 text

function save(filename = throw new TypeError("Argument required")) { }

Slide 6

Slide 6 text

function getEncoder(encoding) { const encoder = encoding === "utf8" ? new UTF8Encoder() : encoding === "utf16le" ? new UTF16Encoder(f alse) : encoding === "utf16be" ? new UTF16Encoder(t rue) : throw new Error("Unsupported encoding"); }

Slide 7

Slide 7 text

*NQMFNFOUBUJPO ࣮͸ੲ7ʹ࣮૷͠·ͨ͠ɻ݁ہ$-͸"CBOEPO͠·͕ͨ͠ɻ

Slide 8

Slide 8 text

1SPCMFN ࣮͸લఏͱͯ͠ 1SPQPTBMUP&YQMPSF&$."4DSJQU4UBUFNFOUTBT&YQSFTTJPOT IUUQTHJUIVCDPNSCVDLUPOQSPQPTBMTUBUFNFOUTBT FYQSFTTJPOTSFBENF ͱ͍͏ఏҊ͕TUBHFʹ͋ͬͨɻ TUBUFNFOUΛFYQSFTTJPOͱͯ͠औѻ͏͜ͱ͕Ͱ͖ΔΑ͏ʹ͢Δͱ͍͏ఏҊ

Slide 9

Slide 9 text

1SPCMFN ͨͩ͠ɺ&DNBTDSJQUʹ͓͚ΔTUBUFNFOUͱFYQSFTTJPOͷࠞಉ͕ ݴޠΛΑΓෳࡶʹͯ͠͠·͏ͷͰਐల͸ͳ͘ UISPXFYQSFTTJPOʹؔͯ͠΋จ๏ͷ௥Ճʹରͯ͠ωΨςΟϒͳ݁࿦͕ग़ͯ ͍ͯTUBHFʹਐΉ͜ͱ͸ͳͦ͞͏

Slide 10

Slide 10 text

%PFYQSFTTJPO ͦͯ͠ߋʹEPFYQSFTTJPOͱ͍͏QSPQPTBM͕ࠓճఏҊ͞Ε͍ͯΔશͯͷ TUBUFNFOUͱFYQSFTTJPO໰୊Λղܾͯ͠͠·͏ͷͰ ଟ෼TUBHF͕ਐΉ͜ͱ͸ͳ͍͔΋͠Εͳ͍ɻ

Slide 11

Slide 11 text

function save(filename = do { throw new TypeError("Argument required”) }) { } // σϑΥϧτύϥϝʔλͰͷdoࣜ͸·ͩະఆ

Slide 12

Slide 12 text

function getEncoder(encoding) { const encoder = encoding === "utf8" ? new UTF8Encoder() : encoding === "utf16le" ? new UTF16Encoder(f alse) : encoding === "utf16be" ? new UTF16Encoder(t rue) : do { throw new Error("Unsupported encoding”); } }

Slide 13

Slide 13 text

1SPQPTBMSJDIFSLFZT

Slide 14

Slide 14 text

$PNQPTFEQSPQPTBM $PMMFDUJPO\UP,FZ UP7BMVF^ͱDPNQPTJUF,FZ DPNQPTJUF4ZNCPM ͷ̎ͭͷQSPQPTBMͷ૊Έ߹Θͤ ͲͪΒ΋ΦϒδΣΫτͷࣝผʹ͍ͭͯ

Slide 15

Slide 15 text

$PMMFDUJPO\UP,FZ UP7BMVF^ $PMMFDUJPOʹUP,FZͱUP7BMVFΛ௥Ճ͢Δ

Slide 16

Slide 16 text

new Map([], { toKey(key) {return normalizedKey;}, toValue(value) {return normalizedValue;}, }); new WeakMap([], { toKey(key) {return normalizedKey;}, toValue(value) {return normalizedValue;}, }); new Set([], { toValue(value) {return normalizedValue;}, }); new WeakSet([], { toValue(value) {return normalizedValue;}, });

Slide 17

Slide 17 text

DPNQPTJUF,FZ DPNQPTJUF4ZNCPM ෳ਺ͷΦϒδΣΫτ͔ΒΩʔΛੜ੒͢Δ DPNQPTJUF,FZͱDPNQPTJUF4ZNCPM"1*Λ௥Ճ͢Δ Ҿ਺ͷॱং͕ҧ͚Ε͹ҧ͏ΩʔͱͳΔ Ωʔʹར༻͞ΕͨΦϒδΣΫτ͸8FBL.BQͰ؅ཧ͞ΕΔͷͰΦϒδΣΫτ ͕ফ͑Ε͹ϝϞϦ͔Β΋ফ͑Δ

Slide 18

Slide 18 text

compositeKey(...parts: [...any]) : Object.freeze({__proto__:null}) compositeSymbol(...parts: [...any]) : Symbol()

Slide 19

Slide 19 text

const myValues = new Map(); const components = [a, b]; const myKey = compositeKey(...components); myValues.set(myKey, components); // ... let [a, b] = myValues.get(myKey);

Slide 20

Slide 20 text

4UBUVT UP,FZ͚ͩTUBHFʹͳΓ·ͨ͠ɻ UP7BMVF͕ඞཁ͔Ͳ͏͔͕TUBHFͰͷٞ࿦ʹͳΓͦ͏

Slide 21

Slide 21 text

$MBTTBDDFTTFYQSFTTJPO

Slide 22

Slide 22 text

8IBUJTUIJT ΫϥεΦϒδΣΫτ΁ΞΫηε͢ΔҰ؏ͨ͠ํ๏Λఆٛ͢Δ

Slide 23

Slide 23 text

class C { static f() { ... } g() { class.f(); } }

Slide 24

Slide 24 text

1SPCMFNTTPGBS TUBUJDͳΫϥεؔ਺ͷதͰUIJTΛ࢖ͬͨ৔߹ɺؔ਺ͷݺͼग़͞ΕํʹΑͬͯ UIJT͕มΘΔ Ϋϥε໊Λ࢖ͬͯ'PPCBSͱͨ͠৔߹ɺ'PPΛԿ౓΋ॻ͘ͷ͸%3:ʹ൓ͯ͠ ͍Δ UIJTDPOTUSVDUPS͔ΒࢀরͰ͖Δ͕ɺಉ͘͡UIJT͕TBGFͰ͸ͳ͍

Slide 25

Slide 25 text

%JTDVTT ࢀরํ๏͕૿͑Δͷ͸޷·͘͠ͳ͍ 'PPCBSͷΑ͏ʹΫϥε໊ͰΞΫηε͢Δͷ͕γϯϓϧͰΑ͍ %3:Λߟ͑ΔͱUIJTDPOTUSVDUPS͕ͩɺ҆શͰ͸ͳ͍ DMBTTCBSͰ΋͍͍͔΋͠Εͳ͍

Slide 26

Slide 26 text

4UBUVT 4UBHFʹͳΓ·ͨ͠