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

javascript/๐Ÿ“– study39

[5์ฃผ์ฐจ ์Šคํ„ฐ๋””]25์žฅ-ํด๋ž˜์Šค ํด๋ž˜์Šค ๋ฌธ๋ฒ•์  ์„คํƒ•(Syntactic Sugar) ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜์˜ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. es6์—์„œ ๋„์ž…๋œ ํด๋ž˜์Šค๋Š” ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ๋งค์šฐ ํก์‚ฌํ•œ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ๋ชจ๋ธ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํ•จ์ˆ˜์ด๋ฉฐ ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜ ํŒจํ„ด์„ ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ํŒจํ„ด ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ฌธ๋ฒ•์  ์„คํƒ•(Syntactic Sugar) ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํด๋ž˜์Šค๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜์™€ ๋งค์šฐ ์œ ์‚ฌํ•˜๊ฒŒ ๋™์ž‘ํ•˜์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. ํด๋ž˜์Šค๋ฅผ newํ‚ค์›Œ๋“œ ์—†์ด ํ˜ธ์ถœ ํ•˜๋ฉด ์—๋Ÿฌ, ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋Š” ์ผ๋ฐ˜ ํ•จ์ˆ˜๋กœ ํ˜ธ์ถœ๋จ ํด๋ž˜์Šค๋Š” ์ƒ์†์„ ์ง€์›ํ•˜๋Š” extends์™€ super ํ‚ค์›Œ๋“œ๋ฅผ ์ œ๊ณต ํด๋ž˜์Šค๋Š” ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๋™์ž‘, (ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ ์œผ๋กœ .. 2022. 3. 27.
[5์ฃผ์ฐจ ์Šคํ„ฐ๋””]24์žฅ-ํด๋กœ์ € ํด๋กœ์ € ํด๋กœ์ €๋Š” ํ•จ์ˆ˜์™€ ๊ทธ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์˜ ์กฐํ•ฉ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์˜ ์ดํ•ด const x = 1; function outerFunc() { const x = 10; innerFunc(); } function innerFunc() { console.log(x); // 1 } outerFunc(); ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„๋ฅผ ๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์ฒฉ๋œ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด outerFunc ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ํ•จ์ˆ˜๋ฅผ ์–ด๋””์„œ ํ˜ธ์ถœํ–ˆ๋Š”์ง€๊ฐ€ ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜๋ฅผ ์–ด๋””์— ์ •์˜ํ–ˆ๋Š”์ง€์— ๋”ฐ๋ผ ์ƒ์œ„ ์Šค์ฝ”ํ”„๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. ์ด๋ฅผ ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„(์ •์  ์Šค์ฝ”ํ”„)๋ผ๊ณ  ํ•œ๋‹ค. ์ „์—ญ์—์„œ ์ •์˜๋œ ํ•จ์ˆ˜์˜ ์ƒ์œ„ ์Šค์ฝ”ํ”„๋Š” ์ „์—ญ์ด๋‹ค. ์‹คํ–‰์ปจํ…์ŠคํŠธ์˜ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์€ ์ž์‹ ์˜ ์™ธ๋ถ€ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ฐธ์กฐ์— ์ƒ์œ„ .. 2022. 3. 27.
[4์ฃผ์ฐจ ์Šคํ„ฐ๋””] 23์žฅ-์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ด ํ•œ๋‹ค๋ฉด ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์Šค์ฝ”ํ”„ ๊ธฐ๋ฐ˜ ์‹๋ณ„์ž์™€ ์‹๋ณ„์ž ๋ฐ”์ธ๋”ฉ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹ ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜๋Š” ์ด์œ  ํด๋กœ์ €์˜ ๋™์ž‘ ๋ฐฉ์‹ ํƒœ์Šคํฌ ํ์™€ ํ•จ๊ป˜ ๋™์ž‘ํ•˜๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์˜ ๋™์ž‘ ๋ฐฉ์‹ ์†Œ์Šค์ฝ”๋“œ์˜ ํƒ€์ž… ECMAScript ์‚ฌ์–‘์€ ์†Œ์Šค์ฝ”๋“œ๋ฅผ 4๊ฐ€์ง€ ํƒ€์ž…์œผ๋กœ ๊ตฌ๋ถ„, ์ด๋•Œ ์†Œ์Šคํฌ๋„๋Š” ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑ ์ „์—ญ ์ฝ”๋“œ(global code) ์ „์—ญ์— ์กด์žฌํ•˜๋Š” ์†Œ์Šค์ฝ”๋“œ. ์ „์—ญ์— ์ •์˜๋œ ํ•จ์ˆ˜, ํด๋ž˜์Šค ๋“ฑ์˜ ๋‚ด๋ถ€ ์ฝ”๋“œ๋Š” ํฌํ•จ X ํ•จ์ˆ˜ ์ฝ”๋“œ(function code) ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ์กด์žฌํ•˜๋Š” ์†Œ์Šค์ฝ”๋“œ ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ์ค‘์ฒฉ๋œ ํ•จ์ˆ˜, ํด๋ž˜์Šค ๋“ฑ์˜ ๋‚ด๋ถ€ ์ฝ”๋“œ๋Š” ํฌํ•จ X eval ์ฝ”๋“œ(eval code) ๋นŒํŠธ์ธ ์ „์—ญ ํ•จ์ˆ˜์ธ eval ํ•จ์ˆ˜์— ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋˜์–ด ์‹คํ–‰๋˜๋Š” ์†Œ์Šค์ฝ”๋“œ. ๋ชจ.. 2022. 2. 23.
[4์ฃผ์ฐจ ์Šคํ„ฐ๋””] 22์žฅ- this this this์˜ ์ •์˜ this๋Š” ์ž์‹ ์ด ์†ํ•œ ๊ฐ์ฒด ๋˜๋Š” ์ž์‹ ์ด ์ƒ์„ฑํ•  ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ž๊ธฐ์ฐธ์กฐ ๋ณ€์ˆ˜ this๋ฅผ ํ†ตํ•ด ์ž์‹ ์ด ์†ํ•œ ๊ฐ์ฒด ๋˜๋Š” ์ž์‹ ์ด ์ƒ์„ฑํ•  ์ธ์Šคํ„ด์Šค์˜ ํ”„๋กœํผํ‹ฐ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. this์˜ ํ•„์š”์„ฑ ๊ฐ์ฒด๋Š” ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ํ”„๋กœํผํ‹ฐ : ์ƒํƒœ(state)๋ฅผ ๋‚˜ํƒ€๋ƒ„ ๋ฉ”์„œ๋“œ : ๋™์ž‘์„ ๋‚˜ํƒ€๋ƒ„ ๊ฐ์ฒด๋Š” ์ž์‹ ์ด ์†ํ•œ ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊น€ ์ž์‹ ์˜ ํ”„๋กœํผํ‹ฐ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ฐธ์กฐํ•˜๋ ค๋ฉด ์šฐ์„  ์ž์‹ ์ด ์†ํ•œ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์‹๋ณ„์ž๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ๊ฒฝ์šฐ newํ‚ค์›Œ๋“œ๋กœ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์•ผ instance๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. ์ฆ‰, ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” ์‹œ์ ์— ์ƒ์„ฑ๋  ์˜ˆ์ •์ธ instance๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์‹๋ณ„์ž๊ฐ€ ํ•„์š” (= this).. 2022. 2. 23.
[4์ฃผ์ฐจ ์Šคํ„ฐ๋””] 21์žฅ- ๋นŒํŠธ์ธ ๊ฐ์ฒด ๋นŒํŠธ์ธ ๊ฐ์ฒด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด์˜ ๋ถ„๋ฅ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํฌ๊ฒŒ 3๊ฐœ์˜ ๊ฐ์ฒด๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ‘œ์ค€ ๋นŒํŠธ์ธ๊ฐ์ฒด ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด๋Š” ECMAScript ์‚ฌ์–‘์— ์ •์˜๋œ ๊ฐ์ฒด๋ฅผ ๋งํ•˜๋ฉด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์—ญ์˜ ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ํ™˜๊ฒฝ๊ณผ ๊ด€๊ณ„์—†์ด ์–ธ์ œ๋‚˜ ์‚ฌ์šฉ๊ฐ€๋Šฅ ์ „์—ญ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋กœ์„œ ์ œ๊ณต ๋จ ๋”ฐ๋ผ์„œ ์ „์—ญ ๋ณ€์ˆ˜ ์ฒ˜๋Ÿผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด๋Š” ECMAScript ์‚ฌ์–‘์— ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ํ™˜๊ฒฝ (browser๋˜๋Š” Node.js)์—์„œ ์ถ”๊ฐ€๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฐ์ฒด ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ : DOM, BOM, Canvas, XMLHttpRequest ๋“ฑ์˜ WebAPI์ œ๊ณต Node.js ํ™˜๊ฒฝ : path, os ๋“ฑ node.js ์—์„œ ๊ณ ์œ ์˜ API ์ œ๊ณต ๊ณต์‹๋ฌธ์„œ ์ฐธ์กฐ ์‚ฌ์šฉ์ž.. 2022. 2. 23.
[4์ฃผ์ฐจ ์Šคํ„ฐ๋””] 20์žฅ- strict mode strict mode strict mode ๋ž€? ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์˜ ๋ฌธ๋ฒ•์„ ์ข€ ๋” ์—„๊ฒฉํžˆ ์ ์šฉํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ฑฐ๋‚˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์˜ ์ตœ์ ํ™” ์ž‘์—…์— ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋ช…์‹œ์ ์ธ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ESLint ๊ฐ™์€ ๋ฆฐํŠธ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด๋„ strict ๋ชจ๋“œ์™€ ์œ ์‚ฌํ•œ ํšจ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ๋ฆฐํŠธ ๋„๊ตฌ๋ž€ ์ •์  ๋ถ„์„ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์Šค์บ”ํ•˜์—ฌ ๋ฌธ๋ฒ•์  ์˜ค๋ฅ˜ ๋งŒ์ด ์•„๋‹ˆ๋ผ ์ž ์žฌ์  ์˜ค๋ฅ˜๊นŒ์ง€ ์ฐพ์•„๋‚ด๊ณ  ์˜ค๋ฅ˜์˜ ์›์ธ์„ ๋ฆฌํฌํŒ…ํ•ด์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค. ESLint์‚ฌ์šฉ๋ฐฉ๋ฒ• strict mode ์˜ ์ ์šฉ ์ „์—ญ์˜ ์„ ๋„ ๋˜๋Š” ํ•จ์ˆ˜ ๋ชธ์ฒด์˜ ์„ ๋‘์— 'use scritct'; ํ‚ค์›Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉ ์ „์—ญ์— ์‚ฌ์šฉ์‹œ ์Šคํฌ๋ฆฝํŠธ ์ „์ฒด์— strict mode ์ ์šฉ 'use .. 2022. 2. 23.