์ ์ฒด ๊ธ (47) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ 11์ ์ค์์ ๊ธฐ๋กํ๋ 2020๋ ํ๊ณ ๋ก โ๐ป 2020๋ 2์, ํฐ์คํ ๋ฆฌ๋ฅผ ๊ฐ์คํ ๋ค 1์ผ 1 ํฌ์คํ ์ ์์ํ๊ณ , ํ๋ก ํธ์๋ ๊ธฐ์ ํธ๋ ๋ ํ์ ์ ์ค์์ฑ๊ณผ ๊ณต๋ถํด์ผ ํ ๊ธฐ์ ์ด ๋ง๋ค๋ ๊ฒ์ ์ฒด๊ฐํ๋ค. ์ทจ์ ์ดํ ์๋์ ์ด๊ณ ์์ผํ๋ ๋ด ๋ชจ์ต์ ํํํ๋ฉด์, ๋ด๊ฒ ๋ถ์กฑํ ์ ์ด ๋ฌด์์ธ์ง, ๋์๊ฐ์ผ ํ ๋ฐฉํฅ์ ๋ํด์ ๊ตฌ์ฒด์ ์ผ๋ก ํ์ ํ ์ ์๋ ๊ณ๊ธฐ๊ฐ ๋์๋ค. ๊ตฌ๊ธ ์ ๋์ผ์ค ์น์ธ์ ๋์ ํ์์ผ๋ ์์ง๋ ์ดํดํ์ง ๋ชปํ ์ด์ ๋๋ฌธ์ ์คํจํ๋ค... 4์ ๋ฌด๋ ต ๊ฐ์ธ์ ์ธ ์ฌ์ ์ผ๋ก ์์์ด ๊ธ๊ฐํ ๋ค ์ฝ 8๊ฐ์์ ์๊ฐ์ด ํ๋ ๊ณ , ์ถ์ ์ฐํด ๋์ ๊ฐ์๊ธฐ ๋ํ๋ ์ธ์ ์ ๋ฐฐ์ ์กฐ์ธ์ ๋ฃ๊ณ ๋จธ๋ฆฌ๋ฅผ ๋ต ํ๊ณ ๋ง์๋ฏํ ์๊ทน์ ๋ฐ์ 10์์ด ๋์ด์์ผ ํฌ์คํ ์ ์ฌ๊ฐํ๋ค. โ๐ป 2020๋ 10์, ์กฐ์ธ์ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์๋ค. 1. ๋ง๋งํ ์๋ก action์ ์ทจํด์ผ ํ๋ จํด์ง๋ค. --> ์ฆ๊ฐ.. ํด๋ก์ ธ (Closure) ํด๋ก์ ธ๋ ํจ์์ ํจ์์ ์ํด ์์ฑ๋๋ scope ๊ฐ์ฒด๋ฅผ ํจ๊ป ์ง์นญํ๋ ์ฉ์ด์ ๋๋ค. - MDN 'JavaScript ์ฌ์ ๋ฌธํ๊ธฐ (JS ํํ ๋ฆฌ์ผ) ํด๋ก์ ธ๋ JavaScript๋ฅผ ๊ณต๋ถํ๋ค๋ฉด ํ ๋ฒ์ฏค ๊ณจ๋จธ๋ฆฌ๋ฅผ ์ฉ๊ฒ ํ๋ ์ ๋ฏ ๋ง๋ฏํ(?) ๊ฐ๋ ์ด๋ค. scope์ closure ๊ฐ๋ ์ ์ด๋ก ์ ์ผ๋ก ์ดํด๊ฐ ๋์๋๋ผ๋ ๋ง์ ์ฝ๋๋ฅผ ์์ฑํ๋ค ๋ณด๋ฉด ์ดํด๊ฐ ๊ฐ์ง ์๋ ์ํฉ์ด ์ ๋ฒ๋ฆฐ๋ค.. (๋ชจ๋ ๊ฐ๋ฐ ์ธ์ด๊ฐ ๊ทธ๋ ๊ฒ ์ง๋ง ํญ์ ์๋กญ๋ค..^^) ์ต๊ทผ ์ฌ๋ฌ ๊ฐ์๋ค์ ๋ค์ผ๋ฉด์ ์ ํ ํด๋ก์ ์ ๋ํ ๋ด์ฉ์ ๋ณต๊ธฐํ๊ณ ์ ํฌ์คํ ์ ์ ์ด๋ณธ๋ค. function makeAdder(a) { return function(b) { return a + b; }; } var add5 = makeAdder(5); var add20 = makeAdder(20.. [์ฝ๋์คํผ์ธ 87, 88] ์์๋ ์์ฑ & async await โ๏ธ์ฝ๋์คํผ์ธ 87 - JS์ ์์๋ ์์ฑ (Delegated Property) *Property ์๋๊ณผ ์บก์ํ๋์ด์๋ ๊ฒ *Property to Object --> delegate โ๏ธ์ฝ๋์คํผ์ธ 88 - async await #1/2 *Sync Flow ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋ ๋ช ๋ น์ด ์์ฐจ์ ์ผ๋ก ์คํ๋จ *Sync Flow Control Goto๋ฅผ ํตํด ๋ช ๋ น์ ์์น๋ฅผ ์ด๋ํจ *Sub Flow ํจ์ ๋ฑ์ ํตํด ๋ณ๋์ ๋ช ๋ น ์ ์ ์ฌ๋ฌ ๋ฒ ์คํํจ (์์ ) function : ๋ฐ๋ณต ์ฌ์ฉํ ์ ์๋ค. (sub flow์ ์ํจ) promise : ํ๋ฒ ์ฌ์ฉ๋๋ฉด ํ๊ธฐ๋๊ณ ๋ค์ ๋ง๋ค์ด์ผ ํจ (sub flow๊ฐ ์๋) *Blocking Sync Flow๊ฐ ์คํ๋๋ ๋์ ใ ๋ฅธ ์ผ์ ํ ์ ์๋ ํ์ ๋ฉํฐํ์คํน ๋ถ๊ฐ๋ฅ (๋ ธ์ด๋ง ๋จธ์ .. [์ฝ๋์คํผ์ธ 78] ES6+ํจ์์ OOP โ๏ธ์ฝ๋์คํผ์ธ 78 - ES6+ํจ์์ OOP 1ํ์ฐจ *Sub Routine Flow ๋ฉ์ธ ํ๋ก์ฐ๊ฐ ์๋๋ผ ์๋ธ๋ฃจํด์ ์ค์ฌ์ผ๋ก ๋ณด๊ณ ํจ์๊ฐ ์๋๋ผ ๋ฃจํด์ ๊ด์ ์์ ๋ณธ๋ค. -ES6์์๋ function์ ์ ๋ ์ฐ์ง ์๋๋ค. ์? Class์ method์ ์ ์ํ๊ธฐ ๋๋ฌธ this(function)๋ ์๋ฏธ๊ฐ ์์ด์ง๋ค. -Arrow Function ์ฌ์ฉ -method๋ class ๊ตฌ๋ฌธ์ผ๋ก ๋์ฒด *value vs reference ์๋ธ๋ฃจํด์์ return ํ๋ ๊ฒ ref ๊ฐ์ด๋ฉด ๋ฉ์ธ ํ๋ก์ฐ ์์ ์๋ ์๋ณธ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝ์ํฌ ๊ฐ๋ฅ์ฑ์ด ์๋ค. ๋ฐ๋ผ์, ๋๋๋ก ์๋ธ๋ฃจํด์ ๋ฆฌํด ๊ฐ์ 1. readonly๋ก ๋ฐํํ๋ค. 2. ๋๋ ์ ๊ฐ์ฒด๋ก ๋ง๋ค์ด ๋ฐํํ๋ค. *Structured Design(๊ตฌ์กฐ์ ์ค๊ณ) by ๋๋ฆฌ ์ฝ์คํํด.. [์ฝ๋์คํผ์ธ 77] ES6+ ๊ธฐ์ด ํธ โ๏ธ์ฝ๋์คํผ์ธ 77 - Es6+ ๊ธฐ์ด ํธ 1ํ์ฐจ *๊ฐ๋ฐ ์ ์๊ฐํด์ผ ํ๋ ์์ธ๋ค ์ฒ ํ : ํฉ๋ฆฌ์ฃผ์์ ์๋์ฃผ์ ๊ฐ์น : ์์ฌ์ํต, ๋จ์ํจ, ์ ์ฐํจ ์์น : ์ง์ญํ, ์ค๋ณต์ ๊ฑฐ, ๋์นญ์ฑ(get, set) ํจํด : ๊ฐ๋ฐ๋ก , ์ค๊ณ๋ก , ๊ฐ์ข ์ ์ฉ ํจํด ๋๊ธฐ : ๋, ์๊ฐ *Program & Timing -Compile Program language code (lint time) Machine Language (compile time) file Load* Run (run time) Terminate (context error) -Script Program language code (lint time) file Load* Machine Language Run (run time) Terminate *Runtime -cp.. ์ฝ๋์คํผ์ธ ES6 ๊ฐ์ฒด์งํฅ JavaScript ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋ ์๊ฐ๋ค โ๏ธ์ฝ๋์คํผ์ธ 77, 78, 88 ๊ฐ์๋ฅผ ๋ฃ๊ณ ... ๋ณธ๊ฒฉ์ ์ผ๋ก ES6 VanillaJS ๊ณต๋ถ๋ฅผ ์์ํ ์ง ์ด๋๋ง 2์ฃผ๊ฐ ๋์๋ค. ๊ทธ ๊ฐ ๋ ธ๋ง๋์ฝ๋์ TodoApp ChromeApp ํด๋ก ์ฝ๋ฉ์ ์งํํ๋๋ฐ ๊ฐ์ ํ ์ด ์งง์๋งํผ ๋ด์ฉ์ด ๊ฐ๊ฒฐํ๋์ด์์ด ์๊ฐํ๊ธฐ ๊ฐํธํ ๋งํผ ๋ด๊ฐ ์ ๋๋ก ์ดํดํ ๊ฒ์ธ์ง ํ์ ํ๊ธฐ ์ด๋ ค์ ๋ค. ๊ทธ๋ฌ๋ ์ค ํ์ฌ ์์๋์ด์๋ react ๊ด๋ จ ์คํ ์นดํก๋ฐฉ์์ ์๋ก์ด ์ ํ๋ธ ๋ฌด๋ฃ ๊ฐ์๋ฅผ ์ถ์ฒ๋ฐ์๋ค. ์ด๋ฆ์ ์ฝ๋ ์คํผ์ธ . ๊ตฌ๊ธ์ด๋ ์ฑ ์ด๋ ์ด๋ณด JavaScript ์ ๋ฌธ์๋ฅผ ์ํ ๊ฐ์๋ ๊ต์ฅํ ๋ง๋ค. ์กฐ๊ธ ๋ JS ์ธ์ด ๊ทผ๋ณธ์ ์ธ ๊ตฌ์กฐ์ ํ๋ก์ธ์ค๋ฅผ ์ดํดํ๊ธฐ ์ข๋ค๊ณ ๋ฌด์์ ES6 JS OOP ๊ด๋ จ ๊ฐ์๋ฅผ ์ฌ์ํ๋ค. ๊ฒฐ๊ณผ๋ ์ ์ธ๊ณ -! โจ ๊ทธ์ ์๊ธฐ์ฒ๋ผ ๋๊ปด์ง๋ ํด๋ก์ ๊ฐ๋ ๊ณผ ์ปจํ ์คํธ ๋ฑ ์ค๋ฌด ์ค ์ ๋ฟ.. JavaScript์ Array ๊ด๋ จ ํจ์๋ค ์๋ฐ์คํฌ๋ฆฝํธ์ ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ๋ฅผ ํ๋ค๋ณด๋ฉด Array ๊ด๋ จ ๋ฉ์๋๋ค์ ํ์ฉ์ด ๋น์ผ๋น์ฌํ๋ค. ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉ๋๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ณ ์์ด์ผ ํ prototype ํจ์๋ค์ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค. Array.from() console.log(Array.from('foo')); // expected output: Array ["f", "o", "o"] console.log(Array.from([1, 2, 3], x => x + x)); // expected output: Array [2, 4, 6] console.log(Array.from({ a: '1', b: '2' })); // [] : object๋ ๋น ๋ฐฐ์ด๋ก ๋ฆฌํด๋๋ค. let obj = { a: '1', b: '2' }; Array.from(Object.keys(.. JavaScript๋ฅผ ์ํ ์๋ฃ๊ตฌ์กฐ ํ๋ถ ์์ ๋ถํฐ ์ง๊ธ๊น์ง, ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ง๋ฃจํ๊ธฐ๋ง ํ๊ณ , ํ๊ธฐ ์ซ์ ์์ ์ฒ๋ผ ๋๋ฅผ ๊ดด๋กญํ์๋ค.. ํ์ง๋ง ํ์ ์ ๋ค์ด์ค๋ฉด์ "์ ์ด ๋ด์ฉ์ด ์ด๋ฐ ์์ผ๋ก ํ์ฉ๋๋๊ตฌ๋" ๋ชธ์ ๊นจ๋ฌ์ผ๋ฉด์ ์ฝ๋๋ฅผ ์์ฑํ๋ ์ผ์ ์กฐ๊ธ์ฉ ์ฌ๋ฏธ๋ฅผ ๋๊ปด์จ ์ง 3๋ ์ฐจ, ์๊ตฌ์ฌ์ด ๋ค์๋ค. ๋๋ ๊ณผ์ฐ JavaScript์ ๊ธฐ๋ณธ์ ์ธ ์๊ณ ๋ฆฌ์ฆ ํจํด์ ์ ๋๋ก ์ดํดํ๊ณ ์๋๊ฐ? ์ค๋ฌด์์ JavaScript๋ฅผ ๋ค๋ฃจ๋ฉด์ ๊ธฐ๋ณธ์ ์ถฉ์คํ๊ฒ ์ดํดํ๊ณ ์๋์ง ๊ถ๊ธํด์ก๋ค. ๊ทธ๋ ๊ฒ ์์ํ ์๊ณ ๋ฆฌ์ฆ ํ ์คํธ ๋ฐฉ๋ฒ์ ๋ฐ๋ก "ํ๋ก๊ทธ๋๋จธ์ค์ ์ฝ๋ฉ ํ ์คํธ ์ฐ์ต ๋ฌธ์ " Level ์์๋๋ก ํ์ด๋ณด๊ธฐ! ๊ธฐ๋ณธ์ ์ธ ๊ฒ๋ ์ต์์ง ์์ ๋ฌธ์ ํํ๋ก ๋ง๋๊ฒ ๋๋ฉด ๋จธ๋ฆฟ์์ด ๋ฐฑ์ง์ฒ๋ผ ๋ฐ๋๋ ๋ง๋ฒ...(๊ทธ๋ฆฌ๊ณ ๋ชฐ๋ ค์ค๋ ํ์ ํ์..) ๋ฐ๋ผ์ ์ด ๊ธ์์๋ ์ต๊ทผ ์๊ณ ๋ฆฌ์ฆ ๊ณต๋ถ๋ฅผ ํ๋ฉด์ .. ์ด์ 1 2 3 4 5 6 ๋ค์