Slide 1

Slide 1 text

ઌͣconstΑΓ࢝ΊΑ @arayaryoma 2018/08/20 - ϔϚλΠτࣾ಺LT

Slide 2

Slide 2 text

ٱʑʹJavaScriptॻ͚͘ͲES2015ͱ͔ ͍͏΍ͭͰ͍Ζ͍ΖมΘͬͯΔͬΆ͍ʁ ม਺એݴ࣌ɺvar ͚ͩ͡Όͳͯ͘let΋࢖͑Δʁ var͸ม਺ͩ͠let͸ఆ਺ͬΆ͍…ʁ Μɺconst΋͋Δʁ ΋͔ͯ͠͠ࢲͷJavaScriptɺ3೥஗ΕͯΔʁ

Slide 3

Slide 3 text

ٱʑʹJavaScriptॻ͚͘ͲES2015ͱ͔ ͍͏΍ͭͰ͍Ζ͍ΖมΘͬͯΔͬΆ͍ʁ ม਺એݴ࣌ɺvar ͚ͩ͡Όͳͯ͘let΋࢖͑Δʁ var͸ม਺ͩ͠let͸ఆ਺ͬΆ͍…ʁ Μɺconst΋͋Δʁ ΋͔ͯ͠͠ࢲͷJavaScriptɺ3೥஗ΕͯΔʁ ࠓ೔͸ͦΜͳ͋ͳͨͷͨΊʹ
 varͱletͱconstͷҧ͍Λ ղઆ͠·͢

Slide 4

Slide 4 text

ٱʑʹJavaScriptॻ͚͘ͲES2015ͱ͔ ͍͏΍ͭͰ͍Ζ͍ΖมΘͬͯΔͬΆ͍ʁ ม਺એݴ࣌ɺvar ͚ͩ͡Όͳͯ͘let΋࢖͑Δʁ var͸ม਺ͩ͠let͸ఆ਺ͬΆ͍…ʁ Μɺconst΋͋Δʁ ΋͔ͯ͠͠ࢲͷJavaScriptɺ3೥஗ΕͯΔʁ ͜ͷεϥΠυΛݟऴΘΔࠒ ͋ͳͨ͸varΛॻ͔ͳ͍਎ମʹ ͳ͍ͬͯΔͰ͠ΐ͏

Slide 5

Slide 5 text

࿩͢͜ͱͱ݁࿦ JSͷvar, let, constͷҧ͍ͱ࢖͍ॴ ϞμϯͳJSͷॻ͖ํ(ྲྀߦ)ʹ͍ͭͯগ͚ͩ͠ var͸׬શʹෆཁ ·ͣ͸constͰॻ͘

Slide 6

Slide 6 text

redeclaration(࠶એݴ)

Slide 7

Slide 7 text

var let const

Slide 8

Slide 8 text

ಈ͘ʁ

Slide 9

Slide 9 text

ಈ͘(variable shadowing)

Slide 10

Slide 10 text

const΋ಉ͡ ಈ͕͘Մಡੑ͕Լ͕ΔͷͰආ͚Δ΂͖

Slide 11

Slide 11 text

scope(ม਺είʔϓ)

Slide 12

Slide 12 text

varͰએݴͨ͠ม਺ͷείʔϓ͸function಺ (τοϓϨϕϧʹએݴͨ͠৔߹͸άϩʔόϧ)

Slide 13

Slide 13 text

if(){}ͳͲͷϒϩοΫ಺Ͱએݴͨ͠ม਺Λ ϒϩοΫͷ֎͔ΒࢀরͰ͖Δ

Slide 14

Slide 14 text

letͰએݴͨ͠ม਺͸είʔϓ͕ϒϩοΫ಺

Slide 15

Slide 15 text

const΋ಉ͘͡ϒϩοΫείʔϓ

Slide 16

Slide 16 text

switch-caseͷ᠘

Slide 17

Slide 17 text

blockʹͯ͠ղܾ

Slide 18

Slide 18 text

reassign(࠶୅ೖ)

Slide 19

Slide 19 text

var͸࠶୅ೖՄೳ

Slide 20

Slide 20 text

let΋࠶୅ೖՄೳ

Slide 21

Slide 21 text

const͸࠶୅ೖෆՄೳ

Slide 22

Slide 22 text

ͨͩ͠constͰએݴͯ͠΋immutableͰ͸ͳ͍ͷͰ஫ҙɻ Objectͷproperty΍Arrayͷཁૉ͸͍͘ΒͰ΋ॻ͖׵ΘΔɻ

Slide 23

Slide 23 text

var let const ࠶એݴ είʔϓ function block block ࠶୅ೖ immutable?
 (primitiveͳσʔλܕҎ֎) NO NO NO

Slide 24

Slide 24 text

࣮ફྫͰݟΔ
 ݱ୅෩JavaScript

Slide 25

Slide 25 text

࣮ફྫ1 Array [1,2,3,4,5]ͷ֤ཁૉΛ10ഒͯ͠ग़ྗ

Slide 26

Slide 26 text

Bad. i͕for blockͷ֎ʹ΋ӨڹΛٴ΅͢

Slide 27

Slide 27 text

iͷείʔϓ͕for block಺ʹͳͬͨɻ
 Ͱ΋΋͏ͪΐͬͱ؆ܿʹॻ͖͍ͨɻ
 arrͷཁૉΛॻ͖׵͑ͯΔͷ΋ා͍ɻ

Slide 28

Slide 28 text

࣮૷͸1ߦ
 arrΛมߋ͠ͳ͍ɻGood

Slide 29

Slide 29 text

࣮ફྫ2 Array [1,2,3,4,5]ͷ֤ཁૉͷ߹ܭ஋Λग़ྗ

Slide 30

Slide 30 text

letͱfor loop

Slide 31

Slide 31 text

for-ofΛ࢖͏

Slide 32

Slide 32 text

Array.prototype.reduceΛ࢖͏ɻ
 sumΛ࠶୅ೖෆՄʹͰ͖ͯ҆શɻ

Slide 33

Slide 33 text

ݱ୅෩JS ม਺είʔϓ͸Ͱ͖Δ͚ͩখ͘͞ɺͰ͖Δ͚ͩ࠶୅ೖෆՄʹ͢Δ Ұ౓࡞ͬͨobject͸มԽͤ͞ͳ͍ͷ͕ਖ਼ٛ ෭࡞༻ͷൃੜΛආ͚Δ Immutable.jsΛ࢖ͬͯcollection͸͢΂ͯimmutableͰ͋Δ͜ͱΛલఏʹ͢Δ ྲྀ೿ ArrayͳͲʹศརͳmethod΋࢓༷Ͱ௥Ճ͞Ε͍ͯΔ(https://github.com/tc39/ proposals)

Slide 34

Slide 34 text

࣮ફྫ3
 ඇಉظ+varͷා͞Λମݧ(ϥΠϒίʔσΟϯά)

Slide 35

Slide 35 text

Array΋Object΋immutableʹ͍ͨ͠ਓ΁

Slide 36

Slide 36 text

Object.freeze()ͰखܰʹObject΍ArrayΛimmutableʹ

Slide 37

Slide 37 text

Immutable.jsͷclassΛ࢖͏

Slide 38

Slide 38 text

Immutable.jsͬͯʁ https://facebook.github.io/immutable-js/ WebϑϩϯτΤϯυͰ͸͓ೃછΈͷFacebook੡ JavaScriptͰimmutableͳܕΛѻ͑ΔΑ͏ʹ͢ΔͨΊͷϥΠϒϥϦ Object΍ArrayͳͲɺJavaScriptͷbuilt-inͳσʔλܕΛimmutableʹ ͢ΔΞϓϩʔνͰ͸ͳ͘ɺؔ਺ܕݴޠ͔Β༌ೖͨ͠ಠࣗͷσʔλܕ Λѻ͏ List, Stack, Map, OrderedMap, Set, OrderedSet,

Slide 39

Slide 39 text

·ͱΊ var͸΋͏͍Βͳ͍ ·ͣconstͰॻ͍ͯɺͲ͏ͯ͠΋ඞཁͳΒletΛ࢖͏ ෭࡞༻Λආ͚Δ͜ͱ͕ਖ਼ٛͩͱ͍͏࣌୅ ؔ਺ܕݴޠͷύϥμΠϜ͕JSͷੈքʹ༌ೖ͞ΕͯΔ TypeScript + Rx.js + Immutable.jsͱ͔΍Γ͸͡ΊΔͱ׬શʹผݴޠ