1920幎ãWilliam Stranka Jr.ã®
æ¬ ãã¹ã¿ã€ã«ã®èŠçŽ ãã è±èªã«é¢ããããããã®å§åã¯ä»æ¥é¢é£ããŠããŸãã ã³ãŒãã«åãååãé©çšãããšãããã°ã©ã ã®å質ãåäžãããããšãã§ããŸãã

å³å¯ãªã«ãŒã«ã«ã€ããŠã¯è©±ããŠããªãããšã«æ³šæããŠãã ããã ä»æ¥ã話ãããããšã¯åãªãæšå¥šäºé
ã§ãã ããªãããããã«åŸãããšã«æ±ºãããšããŠããäŸãã°ããããã³ãŒããããç解ããããããã®ã«åœ¹ç«ã€ãªãããããããéžè±ããæ£åœãªçç±ããããããããŸããã ãã ãããã®éã«ã¯æ³šæãå¿
èŠã§ããã人ã
ã¯
èªç¥çæªã¿ã®åœ±é¿ãåããããšãå¿ããªãã§ãã ããã ããšãã°ãJavaScriptã§æ®éã®
é¢æ°ãš
ç¢å°é¢æ°ãéžæããå ŽåãåŸè
ã«ããŸã詳ãããªã人ã¯ãããç解ãããããç°¡åã§ã䟿å©ã§ãããããç¿æ
£ã®ããã«éåžžã®é¢æ°ã奜ãã§ãããã
ãã¹ã¿ã€ã«ã®èŠçŽ ãã®ååã¯ãä»ãŸã§å¶ç¶ã§ã¯ãããŸããã åé¡ã¯ãéåžžããããã䜿çšãããšããã¹ããæ¹åãããããšã§ãã éåžžãæ¬ã®èè
ã¯æ£ããã§ãã æ°ãŸãããå人çãªå¥œã¿ã®ããã§ã¯ãªããããã«ååãªçç±ãããå Žåã«ã®ã¿ããããããéžè±ãã䟡å€ããããŸãã
ãæ§æã®åºæ¬ååãã®ç« ã®æšå¥šäºé
ã®å€ãã¯ãããã°ã©ã ã³ãŒãã«é©çšãããŸãã
- 段èœãæ§æã®æå°ã®éšåã«ããŸãã 1ã€ã®æ®µèœ-1ã€ã®ãããã¯ã
- äžèŠãªèšèã¯é¿ããŠãã ããã
- æå¹ãªãããžããã䜿çšããŠãã ããã
- ççµåæã®ã·ãŒã±ã³ã¹ãé¿ããŸãã
- æå³ãäºãã«é¢é£ããŠããæã®åèªã¯ãä»ã®èšèªæ§æèŠçŽ ã«ãã£ãŠåé¢ãããã¹ãã§ã¯ãããŸããã
- è¯å®çãªå£°æã䜿çšããŸãã
- æå³ãšç®çãè¿ãæèãã䞊åæ§æã䜿çšããŠåæ§ã®åœ¢åŒã§è¡šçŸããŸãã
ã³ãŒãã¹ã¿ã€ã«ã«ã€ããŠãã»ãŒåãããšãèšããŸãã
- ãã£ãŒãã£ãŒãæ§æã®æå°éã®éšåã«ããŸãã 1ã€ã®æ©èœ-1ã€ã®ã¿ã¹ã¯ã
- äžèŠãªã³ãŒããé¿ããŠãã ããã
- æå¹ãªãããžããã䜿çšããŠãã ããã
- ççµåã®èšèªæ§é ã®ã·ãŒã±ã³ã¹ãé¿ããŸãã
- 1ã€ã®åé¡ã解決ããããšãç®çãšããã³ãŒããšä»ã®ããã°ã©ã èŠçŽ ã1ãæã«ä¿ç®¡ããŸãã
- å€æ°åãšåŒãäœæãããšãã¯ãè¯å®åœ¢åŒã䜿çšããŸãã
- åããã³ãã¬ãŒãã䜿çšããŠãåæ§ã®åé¡ã解決ããŸãã
æ§æåäœãšããŠã®æ©èœ
ãœãããŠã§ã¢éçºã®æ¬è³ªã¯æ§æã§ãã ã¢ãžã¥ãŒã«ãé¢æ°ãããŒã¿æ§é ãæ§æããŠããã°ã©ã ãäœæããŸãã
é¢æ°ãäœæããããã»ã¹ãšãããããä»ã®é¢æ°ãšäžç·ã«äœ¿çšããæ¹æ³ãç解ããããšã¯ãããã°ã©ããŒã®åºæ¬çãªã¹ãã«ã®1ã€ã§ãã
ã¢ãžã¥ãŒã«ã¯ãé¢æ°ãŸãã¯ããŒã¿æ§é ã®ã³ã¬ã¯ã·ã§ã³ã§ãã ããŒã¿æ§é ã¯ãããã°ã©ã ã®ç¶æ
ãè¡šãæ¹æ³ã§ãã ãã ããé¢æ°ã䜿çšããããã«ãªããŸã§ãèå³æ·±ãããšã¯äœãèµ·ãããŸããã
JavaScriptã«ã¯ã3çš®é¡ã®é¢æ°ããããŸãã
- éä¿¡æ©èœãã€ãŸããI / Oæäœãå®è¡ããæ©èœã
- æç¶ãé¢æ°ãç¹å®ã®ã¢ã«ãŽãªãºã ã®åââé¡ã解決ããããã®ã°ã«ãŒãåãããåœä»€ã®ã»ããã§ãã
- ããŒã¿ãååŸããŠå€æããçºçãããã®ãè¿ããããã³ã°é¢æ°ã
I / Oæäœãšç¹å®ã®ããŒã¿åŠçã¢ã«ãŽãªãºã ãå®è£
ããããã®é¢æ°ã¯ã»ãŒã©ãã§ãå¿
èŠã§ããã䜿çšããå¿
èŠãããé¢æ°ã®å€§éšåã¯ãããã³ã°ã«é¢äžããŸãã
â1ã€ã®ã¿ã¹ã¯-1ã€ã®æ©èœ
é¢æ°ãI / Oæäœãå®è¡ããããã«èšèšãããŠããå Žåããã®ã¿ã¹ã¯ã§ãããã³ã°ã¿ã¹ã¯ãåŠçããªãã§ãã ããã é¢æ°ããããã³ã°ãç®çãšããŠããå Žåããã®é¢æ°ã«å¯ŸããŠI / Oæäœãå®è¡ããªãã§ãã ããã
æç¶ãé¢æ°ã¯ãã1ã€ã®é¢æ°-1ã€ã®ã¿ã¹ã¯ãèŠåãšççµåèšèªæ§é ã«é¢ããèŠåã®äž¡æ¹ã«éåããŠãããšèšããªããã°ãªããŸããã ãããããã®ãããªæ©èœãªãã§ã¯ã§ããŸããã
çæ³çãªé¢æ°ã¯ã次ã®åºæ¬çãªç¹æ§ãæã€åçŽã§æ±ºå®ç
ãªçŽç²ãªé¢æ°ã§ãã
- åãå
¥åã¯åžžã«åãåºåãæäŸããŸãã
- åŒã³åºããããšããå¯äœçšã¯ãããŸããã
åé·ã³ãŒã
é®®ãããªããã¹ãã¯ç°¡æœã§ãã å³é¢ã«äžå¿
èŠãªç·ããã£ãŠã¯ãªããªããšããåãçç±ã§ãæã«äžå¿
èŠãªåèªããªãã段èœã«äžå¿
èŠãªæããã£ãŠã¯ãªããŸããã ããã¯ãäœå®¶ãçãæç« ã®ã¿ã䜿çšããããŸãã¯è©³çŽ°ãé¿ããŠäžè¬çãªèª¬æã䜿çšããå¿
èŠãããããšãæå³ãããã®ã§ã¯ãããŸããã ããã¯ããã¹ãŠã®åèªã«æå³ãããããšãæå³ããŸãã [äœåãªåèªã¯çç¥]ã
ãŠã£ãªã¢ã ã»ã¹ãã©ã³ã¯ã»ãžã¥ãã¢ããã¹ã¿ã€ã«ã®èŠçŽ ã
ãœãããŠã§ã¢éçºã§ã¯ãã³ãŒããå€ãã»ã©ããã¹ãç¯ãå¯èœæ§ã®ããå Žæãå¢ãããããç°¡æœãªã³ãŒãã¯éåžžã«éèŠã§ãã
ã³ãŒããå°ãªããªããšããšã©ãŒãé ããå Žæãå°ãªããªãããšã©ãŒã®æ°ãæžããŸããç°¡æœãªã³ãŒãã¯ãæçšãªããŒã¿ãšæ
å ±ã®ãå¹²æžãã®æ¯çãé«ããããèªã¿ããããªããŸãã èªè
ã¯ãããã°ã©ã ã®æå³ãç解ããããã«ãæ§æäžã®ããã€ãºããåãé€ãå¿
èŠããããŸãã ãããã£ãŠãã³ãŒããå°ãªããšãæ§æäžã®ããã€ãºããå°ãªããªãããã®çµæãæå³ãããæ確ã«äŒéãããŸãã
ãã¹ã¿ã€ã«èŠçŽ ãããã®èšèã§èšãã°ãå§çž®ã³ãŒãã¯ãšãã«ã®ãã·ã¥ãªã³ãŒãã§ãã ããšãã°ã次ã®ãããªæ§é ïŒ
function secret (message) { return function () { return message; } };
ããã¯ããã«æžããããšãã§ããŸãïŒ
const secret = msg => () => msg;
ç¢å°é¢æ°ã«å
žåçãªæå°éã®æ§æïŒ2015幎ã«ES6ã«ç»å ŽïŒã«ç²ŸéããŠãã人ã¯ãæåã®äŸã®ã³ãŒãã§ã¯ãªãããã®ã¬ã³ãŒããèªãå¯èœæ§ãé«ããªããŸãã æ¬åŒ§ã
function
ããŒã¯ãŒãã
return
ãªã©ã®äžèŠãªèŠçŽ ã¯ããã§ã¯çç¥ãããŸãã
æåã®ããŒãžã§ã³ã«ã¯ãå€ãã®ãŠãŒãã£ãªãã£æ§ææ§æããããŸãã ãããã¯ãæ¬åŒ§ãããŒã¯ãŒã
function
ãããã³
return
ã§ãã ãããã¯ãç¢å°é¢æ°ã«ç²ŸéããŠãã人ã«ãšã£ãŠã¯ãæ§æäžã®ããã€ãºãã«éããŸããã ãããŠãçŸä»£ã®JavaScriptã§ã¯ããã®ãããªæ§é ã¯ãES6ã§ãŸã ååã«èªä¿¡ããªã人ãã³ãŒããèªãããšãã§ããããã«ããããã«ã®ã¿ååšããŸãã ããããES6ã¯2015幎ã«èšèªæšæºã«ãªã£ããããES6ããããã
ç解ãããšããæ¥ãŸããã
äžèŠãªå€æ°
æã
ç§ãã¡ã¯äœãã«ååãä»ããŸãããããã¯ããŸãå¿
èŠã§ã¯ãããŸããã ãªãããã®äžéå€æ°ããããšããŸãããã ãªããããæ害ãªã®ã§ããïŒ ããã§ã®åé¡ã¯ã人éã®è³ã®çæèšæ¶
ãªãœãŒã¹ã
éãããŠããããš
ã§ã ã ããã°ã©ã ã®ããã¹ãã§å€æ°ã«åºäŒã£ãã®ã§ããããèŠããŠããå¿
èŠããããŸãã ååãããããããå Žåãç§ãã¡ã®èšæ¶ã¯äžæ¯ã§ããå®æçã«èªããšããç§ãã¡ã¯æ»ã£ãŠè¡ããªããã°ãªããŸãã...
ããããçµéšè±å¯ãªéçºè
ãäžå¿
èŠãªå€æ°ãæé€ããããšã«æ
£ããŠããçç±ã§ãã
ããšãã°ãã»ãšãã©ã®å Žåãé¢æ°ã®æ»ãå€ãä¿åããããã ãã«äœæãããå€æ°ã¯äœ¿çšããªãã§ãã ããã é¢æ°ã®ååã¯ãé¢æ°ãæ£ç¢ºã«è¿ããã®ã«é¢ããé©åãªæ
å ±ãæäŸããå¿
èŠããããŸãã äŸãèããŠã¿ãŸãããïŒ
const getFullName = ({firstName, lastName}) => { const fullName = firstName + ' ' + lastName; return fullName; };
äžèŠãªãã®ãåãé€ããåŸãã³ãŒãã次ã®ããã«æžãæããããšãã§ããŸãã
const getFullName = ({firstName, lastName}) => ( firstName + ' ' + lastName );
å€æ°ã®æ°ãæžããå¥ã®äžè¬çãªã¢ãããŒãã¯ãé¢æ°ã®æ§æãšãããããç¡æå³è¡šèšãã䜿çšããããšã§ãã
ãããã¬ã¹è¡šèšæ³ã¯ããããã®é¢æ°ãåäœããåŒæ°ã«èšåããã«é¢æ°ã宣èšããæ¹æ³ã§ãã ãã®ã¢ãããŒãã®äžè¬çãªçšéã¯ãã«ãªãŒåãšæ©èœã®åæã§ãã
ã«ãªãŒåã®äŸã次ã«ç€ºããŸãã
const add2 = a => b => a + b;
inc()
é¢æ°ã®å®£èšãèŠãŠãã ããã
function
ããŒã¯ãŒãããç¢å°é¢æ°ã®å®£èšã«åºæã®æ§æèŠçŽ ããªãããšã«æ³šæããŠãã ããã ããã§ã¯ãé¢æ°ããã©ã¡ãŒã¿ãŒã䜿çšããªããããé¢æ°ã®ãã©ã¡ãŒã¿ãŒã®èª¬æã¯ãããŸããã 代ããã«ãæž¡ãããåŒæ°ãã©ãããããç¥ã£ãŠããå¥ã®é¢æ°ãè¿ããŸãã
é¢æ°åæã䜿çšããäŸãèŠãŠãã ããã é¢æ°æ§æãšã¯ãå¥ã®é¢æ°ã«ãã£ãŠè¿ãããçµæã«é¢æ°ãé©çšããããšã§ãã ãããç¥ã£ãŠãããã©ããã«é¢ä¿ãªããæ©èœã®æ§æã¯åžžã«é©çšãããŸãã
ããšãã°ã
.map()
ã
promise.then()
ãªã©ã®ã¡ãœããåŒã³åºãã®ãã§ãŒã³ã䜿çšããå Žåã é¢æ°ã®æ§æãèšè¿°ããæãäžè¬çãªåœ¢åŒã«ç®ãåãããšã次ã®æ§é ãåŸãããŸãïŒ
f(g(x))
ã æ°åŠã§ã¯ãããã¯éåžž
f â g
ãšããŠèšè¿°ããããé¢æ°
g
çµæã«é¢æ°
f
ãé©çšããããšèªã¿ãŸãã
2ã€ã®é¢æ°ã®æ§æãåŒã³åºãããšã«ãããé¢æ°åŒã³åºãéã®äžéå€ãä¿æããå€æ°ãäœæããå¿
èŠããªããªããŸãã
ãã®ææ³ã䜿çšããŠãããã¯ãªãŒã³ãªã³ãŒããäœæããæ¹æ³ãèŠãŠã¿ãŸãããã
const g = n => n + 1; const f = n => n * 2;
åãããšã¯ã©ã®é¢æ°ã§ãå®è¡ã§ããŸãã
ãã¡ã³ã¯ã¿ãŒã¯ããããã³ã°é¢æ°ãå®è£
ãããªããžã§ã¯ãã§ãã ããšãã°ãJSã§ã¯ããããã¯é
åïŒ
Array.map()
ïŒãŸãã¯
promise.then()
ïŒã§ãã é¢æ°ãæ§æããç®çã§ãããã³ã°é¢æ°ãžã®åŒã³åºãã®ãã§ãŒã³ã䜿çšããŠã
compose2
é¢æ°ã®å¥ã®ããŒãžã§ã³ãäœæããŸãã
const compose2 = (f, g) => x => [x].map(g).map(f).pop(); const incThenDoublePointFree = compose2(f, g); incThenDoublePointFree(20);
Promiseã§ã³ãŒã«ãã§ãŒã³ã䜿çšãããã³ã«ãå®è³ªçã«åãããšãè¡ããŸãã
å®éãåé¢æ°åããã°ã©ãã³ã°ã©ã€ãã©ãªã¯ãé¢æ°ãæ§æããå°ãªããšã2ã€ã®æ¹æ³ãå®è£
ããŠããŸãã ããã¯ãå³ããå·Šã«é¢æ°ãé©çš
compose()
é¢æ°ãšãå·Šããå³ã«é¢æ°ãé©çšãã
pipe()
ã§ãã
ããšãã°ãLodashã§ã¯ããã®ãããªé¢æ°ã¯ãããã
compose()
ããã³
flow()
ãšåŒã°ããŸãã ãã®ã©ã€ãã©ãªã䜿çšãããšãã次ã®ããã«
flow()
é¢æ°ã䜿çšããŸãã
import pipe from 'lodash/fp/flow'; pipe(g, f)(20);
ãã ãããã®ãããªæ©èœã¯ãã©ã€ãã©ãªãªãã§åå¥ã«å®è£
ã§ããŸãã
const pipe = (...fns) => x => fns.reduce((acc, fn) => fn(acc), x); pipe(g, f)(20);
äžèšãéåžžã«é£è§£ãªããã«æããããã®ãã¹ãŠãã©ã®ããã«å©çšãããããããªãå Žåã¯ã次ã®ããšãèæ
®ããŠãã ããã
ãœãããŠã§ã¢éçºã®æ¬è³ªã¯æ§æã§ãã å°ããªã¢ãžã¥ãŒã«ãé¢æ°ãããŒã¿æ§é ãæ§æããŠããã°ã©ã ãäœæããŸããé¢æ°ãšãªããžã§ã¯ããäœæããããã®ããŒã«ãç解ããããšã¯ããã«ããŒã«ãšã£ãŠãããªã«ã«ãšã£ãŠãã¢ã»ã³ããªã¬ã³ãæ±ãèœåã«ãšã£ãŠããããã°ã©ãã«ãšã£ãŠãéèŠã§ãã ãŸããåœä»€ã³ãŒãã䜿çšããŠé¢æ°ãçµã¿åãããå€æ°ãäžåœã«äœ¿çšããŠäžéçµæãä¿åããããšã¯ã家å
·ãç²çããŒãã§çµã¿ç«ãŠãã®ã«äŒŒãŠããŸãã
ãã®çµæã次ã®ããšãèŠããŠããããšããå§ãããŸãã
- æå³ãå€æŽãããæ··ä¹±ããããããããšãªããããå°ãªãã³ãŒãã§ã¢ã€ãã¢ãè¡šçŸã§ããå Žåã¯ãããããŸãã
- å€æ°ã«ã€ããŠãåãããšãèšããŸãã ãã®ãããªæ©äŒãããããããããã°ã©ã ã®ããžãã¯ãšãããããããæãªããªãå Žå-å€æ°ãå°ãªãã»ã©è¯ã-ã
æå¹ãªå
¥é
éåžžãæå¹ãªé³å£°ãšã¯ãååçãªé³å£°ãããæ確ã§çãçããšããæèã®è¡šçŸãæå³ããŸãã
ãŠã£ãªã¢ã ã»ã¹ãã©ã³ã¯ã»ãžã¥ãã¢ããã¹ã¿ã€ã«ã®èŠçŽ ã
ãœãããŠã§ã¢æ§æèŠçŽ ã«ã¯ãã§ããã ãæ確ã§æ£ç¢ºãªååãä»ããŸãã
myFunction.wasCalled()
ãããåªããŠããŸãcreateUser()
ãããåªããŠããŸãnotify()
Notifier.doNotification()
ãããåªããŠããŸã
è¿°èªé¢æ°ãšããŒã«å€ããã¯ããŸãã¯ããããšçãã質åã§ãããã®ããã«åŒã³åºããŸãã
isActive(user)
getActiveStatus(user)
ãããåªããŠãgetActiveStatus(user)
isFirstRun = false;
firstRun = false;
ãããåªããŠãfirstRun = false;
é¢æ°åã«åè©åœ¢åŒã䜿çšããŸãã
increment()
plusOne()
ãããåªããŠãincrement()
unzip()
filesFromZip()
ãããåªããŠããŸãfilter(fn, array)
matchingItemsFromArray(fn, array)
ãããåªããŠããŸã
âã€ãã³ããã³ãã©ãŒ
ã€ãã³ããã³ãã©ãŒãšã©ã€ããµã€ã¯ã«ã¡ãœããã®åœåã¯ã修食åãšããŠäœ¿çšããããããé¢æ°åã«åè©ã䜿çšããèŠåã®äŸå€ã§ãã 圌ãã¯ãäœããããã®ã§ã¯ãªããããã€ãã瀺ããŠããŸãã ãããã®ãã¿ãŒã³ã¯ãã<when when action to action>ã<verb>ããšãããã¿ãŒã³ã«åŸã£ãŠååãä»ããå¿
èŠããããŸãã
element.onClick(handleClick)
ãããåªããŠããŸãcomponent.onDragStart(handleDragStart)
ãããåªããŠãcomponent.startDrag(handleDragStart)
倱æãããšèŠãªããããªã¹ãã®ã€ãã³ããã³ãã©ãŒã®ååã¯ãå¿çããã®ã§ã¯ãªããã€ãã³ããããªã¬ãŒããããã«èŠããŸãã
âã©ã€ããµã€ã¯ã«ã¡ãœãã
ãã®ã³ã³ããŒãã³ããæŽæ°ããåã«ãã³ãã©ãŒé¢æ°ãåŒã³åºãããã«äœæãããä»®æ³ã³ã³ããŒãã³ãã®ã©ã€ããµã€ã¯ã«ã¡ãœããã®æ¬¡ã®ãªãã·ã§ã³ãèŠãŠãã ããã
componentWillBeUpdated(doSomething)
componentWillUpdate(doSomething)
beforeUpdate(doSomething)
æåã®äŸã§ã¯ãååçãªé³å£°ïŒãæŽæ°ãã§ã¯ãªããæŽæ°ãïŒã䜿çšããŸãã ãã®ååã¯åé·ã§ãããä»ã®ãªãã·ã§ã³ãããæ確ã§ã¯ãããŸããã
2çªç®ã®äŸã¯èŠæ ããè¯ãã§ããããã®ã©ã€ããµã€ã¯ã«ã¡ãœããã®æå³ã¯ãã³ãã©ãåŒã³åºãããšã§ãã
componentWillUpdate(handler)
ãšããååã¯ãã³ã³ããŒãã³ãããã³ãã©ãŒã§åäœãããã®ããã«èªã¿åãããããæŽæ°ããŸããããã¯ããã®ãœãããŠã§ã¢æ§æã®çã®å€ãè¡šçŸããŸããã ã€ãŸãããã³ã³ããŒãã³ããæŽæ°ãããåã«ããã³ãã©ãŒãåŒã³åºããŸããã
beforeComponentUpdate()
ãšããååã¯ãæå³ãæãæ確ã«è¡šããŠããŸãã
åçŽåã®éãããã«é²ãããšãã§ããŸãã ãªããžã§ã¯ãã®ã¡ãœããã«ã€ããŠè©±ããŠããã®ã§ãåŒã³åºããããšããªããžã§ã¯ãèªäœãèšåãããŸãã ã€ãŸãããªããžã§ã¯ãåãã¡ãœããåã«è¿œå ããããšã¯åé·ã§ãã ã³ã³ããŒãã³ãã«ã¢ã¯ã»ã¹ããŠãããšãã«ã¡ãœãããåŒã³åºããšã次ã®æ§æãã©ã®ããã«ãªãããèããŠãã ããïŒ
component.componentWillUpdate()
ã ãVasya Vasyaã¯æŒé£ã«ã«ãã¬ããé£ã¹ãããšåãããã«èªã¿ãŸãã ãªããžã§ã¯ãã®ååãžã®äºéåç
§ã¯åé·ã§ãã ãã®çµæã次ã®ããã«ãªããŸãïŒ
component.beforeUpdate(doSomething)
omponent.beforeComponentUpdate(doSomething)
component.beforeUpdate(doSomething)
c
omponent.beforeComponentUpdate(doSomething)
component.beforeUpdate(doSomething)
ãããåªããŠããŸãã
æ©èœçäžçŽç©ã¯ããªããžã§ã¯ãã«ããããã£ãšã¡ãœãããè¿œå ããæ©èœã§ãã ãã®ãããªæ©èœã¯ãå·¥å Žã®çµç«ã©ã€ã³ã«äŒŒãã³ã³ãã¢ãã«ãã§æ¬¡ã
ã«åŒã³åºãããŸãã åé¢æ°ã¯ãå
¥åã§
instance
ã§ãããªããžã§ã¯ããåãåãããã€ãã©ã€ã³ã®æ¬¡ã®é¢æ°ã«æž¡ãåã«äœããè¿œå ããŸãã
ãã®ãããªé¢æ°ã«ã¯åœ¢å®¹è©ã䜿çšããŠååãä»ããããšã奜ã¿ãŸãã é©åãªåèªãèŠã€ããããã«ãæ¥å°ŸèŸãingãããã³ãableãã䜿çšã§ããŸãã 以äžã«äŸã瀺ããŸãã
- const duck = composeMixinsïŒé£è¡ãããã¡ãïŒ;
- const box = composeMixinsïŒå埩å¯èœããããå¯èœïŒ;
ççµåèšèªæ§é ã®ã·ãŒã±ã³ã¹
...äžé£ã®ã¹ããŒãã¡ã³ãã¯ããã«å調ã§éå±ã«ãªããŸãã
ãŠã£ãªã¢ã ã»ã¹ãã©ã³ã¯ã»ãžã¥ãã¢ãã¹ã¿ã€ã«ã®èŠçŽ ãéçºè
ã¯ãé¢æ°ãèšèªæ§æäœã®ã·ãŒã±ã³ã¹ã§æºãããŸãã ãããã®æ§é ã¯ãå®éã«äžé£ã®ççµåã¹ããŒãã¡ã³ãã®äŸãšããŠã次ã
ã«å®è¡ãããããã«èšèšãããŠããŸãã ç¹å®ã®ããã°ã©ã ãããã¯ã§ãã®ãããªåŒã³åºããããŸãã«ãå€ãåéãããå Žåãåæ§ã®ã¢ãããŒãã«ããããããããã¹ãã²ããã£ã³ãŒããã衚瀺ãããŸãã
ããã«ãå€ãã®å Žåãã³ãŒã«ã»ããã¯å€ãã®åæ§ã®åœ¢åŒã§ç¹°ãè¿ãããŸãã åæã«ãç¹°ãè¿ããããã¯ã®ããããã¯ãä»ã®ãããã¯ãšãããã«ç°ãªãå Žåããããå€ãã®å Žåããã®ãããªéãã¯å®å
šã«äºæããã«çºçããŸãã ããšãã°ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã³ã³ããŒãã³ãã®åºæ¬çãªããŒãºã¯ããã®ãããªã³ã³ããŒãã³ãã®ã»ãŒãã¹ãŠã®ããŒãºã«å¯Ÿå¿ããŠããŸãã ã©ã€ããµã€ã¯ã«ã®ããŸããŸãªæ®µéã«åºã¥ããŠãããããã¹ãŠã®ã³ã³ããŒãã³ãã«å¿
èŠãªãã®ãå®è£
ããå®è£
ãããã€ãã®æ©èœã«åå²ã§ããŸãã
次ã®äžé£ã®åŒã³åºããæ€èšããŠãã ããã
const drawUserProfile = ({ userId }) => { const userData = loadUserData(userId); const dataToDisplay = calculateDisplayData(userData); renderProfileData(dataToDisplay); };
ãã®é¢æ°ã¯ãããŒã¿ã®ããŒããããŒããããå
容ã«åºã¥ããæ§ç¯ãã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ã®ããŒã¿ã¢ãã«ãããŒãžäžã®èŠçŽ ã®è¡šç€ºãšãã3ã€ã®ç°ãªãåŠçãå®è¡ããŸãã
ã€ã³ã¿ãŒãã§ã€ã¹ãéçºããããã®ææ°ã®ã©ã€ãã©ãªã§ã¯ãäžèšã®åã¿ã¹ã¯ã¯ãããšãã°å°çšã®æ©èœã䜿çšããŠãä»ã®ã¿ã¹ã¯ãšã¯å¥ã«è§£æ±ºãããŸãã ãããã®ã¿ã¹ã¯ãåé¢ããããšã§ãç¹å¥ãªåé¡ãªãæ©èœãçµã¿åãããŠãããŸããŸãªç¶æ³ã§æãŸããçµæãåŸãããšãã§ããŸãã
ãã®ã¢ãããŒãã«ãããããšãã°ã³ã³ããŒãã³ããåºåããæ©èœãå®å
šã«çœ®ãæããããšãã§ããããã¯ããã°ã©ã ã®ä»ã®éšåã«ã¯åœ±é¿ããŸããã ããšãã°ãReactã«ã¯ãããŸããŸãªãã©ãããã©ãŒã ãšããŸããŸãªã©ã€ãã©ãªäœ¿çšã·ããªãªåãã«èšèšãããå€ãã®ã¬ã³ããªã³ã°ãµãã·ã¹ãã ããããŸãã å®å
šãªãªã¹ãã¯ããã«ã¯ãããŸããããã€ãã£ãiOSããã³Androidã¢ããªã±ãŒã·ã§ã³çšã®ReactNativeãWebVRçšã®AFrameããµãŒããŒåŽã§ã³ã³ããŒãã³ããã¬ã³ããªã³ã°ããããã®ReactDOM /ãµãŒããŒã
äžèšã®é¢æ°ã®å¥ã®åé¡ã¯ãæåã«ãœãŒã¹ããŒã¿ãããŒãããªããšãã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ã®ã¢ãã«ãæºåããŠããŒãžã«è¡šç€ºã§ããªãããšã§ãã ãã®ããŒã¿ãæ¢ã«ããŒããããŠããå Žåã¯ã©ããªããŸããïŒ æçµçã«ãè€æ°ã®æäœãçµã¿åãããåæ§ã®é¢æ°ãè€æ°ååŒã³åºãããå Žåãããã¯äžèŠãªã¢ã¯ã·ã§ã³ã«ã€ãªãããŸãã
ããã«ãéçšã®åé¢ã¯ãç¬ç«ãããã¹ããžã®éãéããŸãã ã³ãŒããäœæããéçšã§ãã³ãŒãã«å ããããå€æŽã®ã¢ããªã±ãŒã·ã§ã³ãžã®åœ±é¿ãå³åº§ã«è©äŸ¡ããããã«ãåžžã«åäœãã¹ããå®è¡ããŠããŸãã ãã ãããã®äŸã®ããã«ãã³ã³ãããŒã«ã®ã¬ã³ããªã³ã°ã³ãŒããšãœãŒã¹ããŒã¿ãèªã¿èŸŒãããã®ã³ãŒããçµã¿åãããå Žåããã¹ãç®çã§èŠçŽ åºåé¢æ°ã«æ¡ä»¶ä»ãããŒã¿ãæž¡ãããšã¯ã§ããŸããã ããã§ã¯ããã¹ãŠããã¹ãããå¿
èŠããããŸã-ããŒããæºåãããã³ããŒã¿åºåã ããã¯ã1ã€ã ãã確èªããå¿
èŠãããå Žåãäžåœãªæéã®ç¡é§ã«ã€ãªãããŸããããšãã°ãããŒã¿ããããã¯ãŒã¯çµç±ã§ããŠã³ããŒãããåŠçãããã©ãŠã¶ã«è¡šç€ºããå¿
èŠããããŸã...ãã¹ãçµæãååŸããã«ã¯ãåã
ã®ã³ã³ããŒãã³ãã確èªããå Žåãããé·ãåŸ
ã€å¿
èŠããããŸãã é¢æ°ãåé¢ãããšãã¢ããªã±ãŒã·ã§ã³ã®ä»ã®éšåãšã¯å¥ã«ãã¹ãã§ããŸãã
ãã®äŸã§ã¯ãã³ã³ããŒãã³ãã©ã€ããµã€ã¯ã«ã®ããŸããŸãªã¡ãœããã«åŒã³åºããé
眮ã§ãã3ã€ã®åå¥ã®é¢æ°ãæ¢ã«ãããŸãã ããšãã°ãã³ã³ããŒãã³ããæ¥ç¶ããããšãã«ãœãŒã¹ããŒã¿ãããŒãããã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ã®ç¶æ
ã®æŽæ°ã«é¢é£ããã€ãã³ãã«å¿ããŠããã®ããŒã¿ãåŠçããç»é¢ã«ã³ã³ããŒãã³ãã衚瀺ããããšãã§ããŸãã
äžèšã®ååãé©çšãããšãåã
ã®ã³ã³ããŒãã³ãã®è²¬ä»»ç¯å²ãããæ確ã«å®çŸ©ããããœãããŠã§ã¢ãåºçŸããŸãã åã³ã³ããŒãã³ãã¯åãããŒã¿æ§é ãšã©ã€ããµã€ã¯ã«ã€ãã³ããã³ãã©ãåå©çšã§ããããã1åã ãã§ååãªã¢ã¯ã·ã§ã³ãäœåºŠãå®è¡ããŸããã
1ã€ã®åé¡ã®è§£æ±ºãç®çãšããã³ãŒãããã³ãã®ä»ã®ããã°ã©ã èŠçŽ ã®ä¿å
å€ãã®ãã¬ãŒã ã¯ãŒã¯ãšãã³ãã¬ãŒãã¯ãã¿ã€ãããšã«ããã°ã©ã ãã¡ã€ã«ãæŽçããããã«çšæãããŠããŸãã å°ããªé»åãToDoã¢ããªã±ãŒã·ã§ã³ãªã©ã®åçŽãªãããžã§ã¯ãã«ã€ããŠè©±ããŠããå Žåããã®ã¢ãããŒãã¯åé¡ãåŒãèµ·ãããŸãããã倧èŠæš¡ãªéçºã§ã¯ãå®è£
ããã¢ããªã±ãŒã·ã§ã³ã®æ©èœã«å¿ããŠãã¡ã€ã«ãã°ã«ãŒãåããæ¹ãé©åã§ãã
ããšãã°ãToDoã¢ããªã±ãŒã·ã§ã³ã®ãã¡ã€ã«éå±€ã«ã¯2ã€ã®ãªãã·ã§ã³ããããŸãã æåã®ãªãã·ã§ã³ã¯ããã¡ã€ã«ãã¿ã€ãå¥ã«ã°ã«ãŒãåããããšã§ãã
. âââ components â âââ todos â âââ user âââ reducers â âââ todos â âââ user âââ tests âââ todos âââ user
2çªç®ã¯è«ççãªã°ã«ãŒãåã§ãã
. âââ todos â âââ component â âââ reducer â âââ test âââ user âââ component âââ reducer âââ test
å®è£
ããæ©èœã®ååã«åŸã£ãŠãã¡ã€ã«ãã°ã«ãŒãåãããšãã¢ããªã±ãŒã·ã§ã³ã®äžéšã«å€æŽãå ããå¿
èŠãããå Žåãå¿
èŠãªãã¡ã€ã«ãæ€çŽ¢ããããã«ãã©ã«ããŒéãåžžã«ç§»åããå¿
èŠããªããªããŸãã
ãã®çµæãå®è£
ããã¢ããªã±ãŒã·ã§ã³æ©èœã®çš®é¡ã«åºã¥ããŠãã¡ã€ã«ãã°ã«ãŒãåããããšããå§ãããŸãã
å€æ°åã«è¯å®åœ¢åŒã䜿çšããåŒãæ§ç¯ãã
æ確ãªå£°æãäœæããŸãã æ°æ ããç¡è²ãåªæäžæãåé¿çãªèãé¿ããŠãã ããã åŠå®ã®æ段ãšããŠãã¢ã³ãããŒãŒã§ããŸãã¯ãããã¯ãåé¿ããæ¹æ³ãšããŠåèªã䜿çšããªãã§ãã ããã
ãŠã£ãªã¢ã ã»ã¹ãã©ã³ã¯ã»ãžã¥ãã¢ããã¹ã¿ã€ã«ã®èŠçŽ ã
å€æ°åã®äŸã«ç§»ããŸãããïŒ
isFlying
ãããåªããŠãisNotFlying
late
notOnTime
ãããåªããŠãnotOnTime
âæ¡ä»¶æŒç®å
ãã®èšèšïŒ
if (err) return reject(err)
...ããããè¯ãïŒ
if (!err) { // ... - } else { return reject(err); }
âäžé
æŒç®å
ã ããïŒ
{ [Symbol.iterator]: iterator ? iterator : defaultIterator }
...ãããããåªããŠããŸãïŒ
{ [Symbol.iterator]: (!iterator) ? defaultIterator : iterator }
âãã¬ãã£ãã¹ããŒãã¡ã³ãã«ã€ããŠ
è«çå€æ°ã¯ããã®å€ãåœã§ããå Žåã«ã®ã¿é¢å¿ãåŒãå ŽåããããŸãã ãã®ãããªå€æ°ã®ååãè¯å®åœ¢åŒã§äœ¿çšãããšããã§ãã¯ãããšãã«è«çåŠå®æŒç®åã䜿çšããå¿
èŠããããšããäºå®ã«ã€ãªãããŸãïŒ ã ãã®ãããªå Žåã¯ãå€æ°ã«æ確ãªè² ã®ååãä»ããæ¹ãé©åã§ãã å€æ°åãšæŒç®åã«å«ãŸããåèªãnotã æ¯èŒæäœã§ã¯ããããŸããªå®åŒåã衚瀺ãããŸãã ããã€ãã®äŸãèŠãŠã¿ãŸãããã
if (missingValue)
if (!hasValue)
if (anonymous)
ãããåªããŠããŸã
if (!hasValue)
if (anonymous)
if (!hasValue)
if (anonymous)
if (!user)
if (isEmpty(thing))
ãããåªããŠãã
if (!user)
if (isEmpty(thing))
if (!user)
if (isEmpty(thing))
if (!user)
if (isEmpty(thing))
ãããåªããŠããŸãã
null nullããã³æªå®çŸ©ã®é¢æ°ã®åŒæ°
ãªãã·ã§ã³ã®ãã©ã¡ãŒã¿ã®ä»£ããã«ã
undefined
ãŸãã¯
null
ãåŒã³åºãé¢æ°ãäœæããªãã§ãã ããã ãã®ãããªç¶æ³ã§ã¯ãååä»ããã©ã¡ãŒã¿ãŒãæã€ãªããžã§ã¯ãã䜿çšããã®ãæé©ã§ãã
const createEvent = ({ title = 'Untitled', timeStamp = Date.now(), description = '' }) => ({ title, description, timeStamp }); // ... const birthdayParty = createEvent({ title: 'Birthday Party', description: 'Best party ever!' });
...ããè¯ãïŒ
const createEvent = ( title = 'Untitled', timeStamp = Date.now(), description = '' ) => ({ title, description, timeStamp }); // ... const birthdayParty = createEvent( 'Birthday Party', undefined, // 'Best party ever!' );
ãã³ãã¬ãŒããšåæ§ã®åé¡ã®è§£æ±º
...䞊åæ§ç¯ã§ã¯ãé¡äŒŒããã³ã³ãã³ããšç®çãæã€ããã¹ããã©ã°ã¡ã³ãã®å€éšé¡äŒŒæ§ãå¿
èŠã§ãã ãã©ãŒã ã®é¡äŒŒæ§ã«ãããèªè
ã¯ã³ã³ãã³ãã®é¡äŒŒæ§ãããç°¡åã«èªèã§ããŸãã
ãŠã£ãªã¢ã ã»ã¹ãã©ã³ã¯ã»ãžã¥ãã¢ããã¹ã¿ã€ã«ã®èŠçŽ ã
ã¢ããªã±ãŒã·ã§ã³ãäœæãããšããããã°ã©ãã¯éåžžã«ãã䌌ãã¿ã¹ã¯ã解決ããå¿
èŠããããŸãã ç¹°ãè¿ãããšãã§ããã³ãŒãã¯éåžžãå®å
šã«äžæã§ã¯ãããŸããã ãã®çµæãäœæ¥äžã¯åžžã«åãããšãããªããã°ãªããŸããã ããã§ã®è¯ããšããã¯ãåæ§ã®ã³ãŒããäžè¬åããæœè±¡åãäœæã§ããããšã§ãã ãããè¡ãã«ã¯ãã³ãŒãã®åãéšåãèå¥ããããããéžæããŠãå¿
èŠãªå Žæã§äœ¿çšããã ãã§ååã§ãã ãŸããéçºã®éçšã§ãã¢ããªã±ãŒã·ã§ã³ã®ç¹å®ã®ãã©ã°ã¡ã³ãã«åºæã®èšèšã®ã¿ã«æ³šæãæã£ãŠãã ããã å®éãããŸããŸãªã©ã€ãã©ãªãšãã¬ãŒã ã¯ãŒã¯ãæ©èœããã®ã¯ãŸãã«ãã®ç®çã§ãã
ããšãã°ãããã«ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®ã³ã³ããŒãã³ãããããŸãããjQueryãã¢ããªã±ãŒã·ã§ã³ããžãã¯ãããã³å€éšãšã®ããåãã®çµç¹ã䜿çšããŠã€ã³ã¿ãŒãã§ã€ã¹ã®æŽæ°ãç©ã¿éããããšãäžè¬çã«ãªã£ãŠãã10幎ãçµéããŠããŸããã ãã®åŸãããã°ã©ããŒã¯MVCãã¯ã©ã€ã¢ã³ãWebã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšã§ããããšã«æ°ä»ãå§ããã¢ãã«ãã€ã³ã¿ãŒãã§ã€ã¹æŽæ°ããžãã¯ããåé¢ãå§ããŸããã
ãã®çµæãã³ã³ããŒãã³ãã¢ãããŒãã䜿çšããŠWebã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ãéå§ããŸãããããã«ãããHTMLãŸãã¯JSXã䜿çšããŠäœæããããã³ãã¬ãŒããªã©ã䜿çšããŠãã³ã³ããŒãã³ãã宣èšçã«ã¢ãã«åã§ããŸããã
ããã«ããããã¹ãŠã®ã³ã³ããŒãã³ãã«åãUIæŽæ°ããžãã¯ã䜿çšãããããã«ãªããç¬èªã®åœä»€åã³ãŒããããã¯ããã«åªããŠããŸãã
ã³ã³ããŒãã³ãã«ç²ŸéããŠãã人ã¯ããªãã¿ã®ãªãã¢ããªã±ãŒã·ã§ã³ã«ã€ããŠè©±ããŠããå Žåã§ãããã®åäœãç°¡åã«ç解ã§ããŸãã , , , , , , , , .
, , , , .
: ,
ES6 2015-, , , . , , , , ,
. â
âŠ
, , . , â . , , ES6 , ES5. .
, , . , :
, , , :
, :
, , , , . . , , , , , , .
, , .
, . , . , ES6, , , , , « » . , , , -, JS, .
芪æãªãèªè
ïŒ ES6 ?