๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€

(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 ์ˆœ์„œ๋Œ€๋กœ ํ’€์–ด๋ณด๊ธฐ! ๊ธฐ๋ณธ์ ์ธ ๊ฒƒ๋„ ์ต์ˆ™์ง€ ์•Š์€ ๋ฌธ์ œ ํ˜•ํƒœ๋กœ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด ๋จธ๋ฆฟ์†์ด ๋ฐฑ์ง€์ฒ˜๋Ÿผ ๋ฐ”๋€Œ๋Š” ๋งˆ๋ฒ•...(๊ทธ๋ฆฌ๊ณ  ๋ชฐ๋ ค์˜ค๋Š” ํ˜„์ž ํƒ€์ž„..) ๋”ฐ๋ผ์„œ ์ด ๊ธ€์—์„œ๋Š” ์ตœ๊ทผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ ..