[JavaScript] ํด๋ž˜์Šค

๋“ฑ์žฅ ๋ฐฐ๊ฒฝ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋กœ ํด๋ž˜์Šค๊ฐ€ ํ•„์š” ์—†๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ์–ธ์–ด์— ์ต์ˆ™ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์€ ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์— ํ˜ผ๋ž€์„ ๋Š๋‚„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์–ด๋ ต๊ฒŒ ๋Š๋ผ๊ฒŒ ํ•˜๋Š” ํ•˜๋‚˜์˜ ์žฅ๋ฒฝ์ฒ˜๋Ÿผ ์ธ์‹๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ES6์—์„œ ๋„์ž…๋œ ํด๋ž˜์Šค๋Š” ๊ธฐ์กด ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋ณด๋‹ค ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ๋งค์šฐ ํก์‚ฌํ•œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด ์ƒ์„ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ์‹œํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ํด๋ž˜์Šค๋Š” ํ•จ์ˆ˜์ด๋ฉฐ ๊ธฐ์กด ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜ ํŒจํ„ด์„ ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ํŒจํ„ด์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฌธ๋ฒ•์  ์„คํƒ•์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์ƒ์„ฑ์ž ํ•จ์ˆ˜์™€ ๋งค์šฐ ์œ ์‚ฌํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๋ฐ˜๋ฉด ๋ช‡ ๊ฐ€์ง€ ์ฐจ์ด์ ์ด ์žˆ์–ด ์ƒˆ๋กœ์šด ๊ฐ์ฒด ์ƒ์„ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ ๋ณด๋Š” ๊ฒƒ์ด ์ข€ ๋” ..

[JavaScript] ํด๋กœ์ €

ํด๋กœ์ €(closure)๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ณ ์œ ์˜ ๊ฐœ๋…์ด ์•„๋‹Œ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ค‘์š”ํ•œ ํŠน์„ฑ์œผ๋กœ MDN์—์„œ๋Š” ํด๋กœ์ €๋ฅผ "ํ•จ์ˆ˜์™€ ๊ทธ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ๊ณผ์˜ ์กฐํ•ฉ"์ด๋ผ๊ณ  ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํด๋กœ์ €๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„  ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์— ๋Œ€ํ•ด ์•Œ์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ํ•จ์ˆ˜๋ฅผ ์–ด๋””์„œ ์ •์˜ํ–ˆ๋Š”์ง€์— ๋”ฐ๋ผ ์ƒ์œ„ ์Šค์ฝ”ํ”„์ธ ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„(์ •์  ์Šค์ฝ”ํ”„)๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. const x = 1; function foo () { const x = 10; bar(); } function bar () { console.log(X); } foo(); // 1 bar(); // 1 ์œ„ ์˜ˆ์ œ์˜ foo ํ•จ์ˆ˜์™€ bar ํ•จ์ˆ˜๋Š” ๋ชจ๋“œ ์ „์—ญ์—์„œ ์ •์˜๋œ ์ „์—ญ ํ•จ์ˆ˜๋กœ foo ํ•จ์ˆ˜์™€ bar ํ•จ์ˆ˜ ๋ชจ๋‘ ..

[JavaScript] ์‹คํ–‰ ์ปจํ…์ŠคํŠธ

์‹คํ–‰ ์ปจํ…์ŠคํŠธ(execution context)๋ž€? ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๊ณ  ์ฝ”๋“œ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์‹ค์ œ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์˜์—ญ์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํ•ต์‹ฌ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ์†Œ์Šค์ฝ”๋“œ์˜ ํƒ€์ž… ECMAScript ์‚ฌ์–‘์€ ์†Œ์Šค์ฝ”๋“œ๋ฅผ 4๊ฐ€์ง€ ํƒ€์ž…์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๋Š”๋ฐ ํƒ€์ž…์— ๋”ฐ๋ผ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •๊ณผ ๊ด€๋ฆฌ ๋‚ด์šฉ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์†Œ์Šค์ฝ”๋“œ ํƒ€์ž… ์„ค๋ช… ์ „์—ญ ์ฝ”๋“œ - ์ „์—ญ์— ์กด์žฌํ•˜๋Š” ์†Œ์Šค์ฝ”๋“œ - ์ตœ์ƒ์œ„ ์Šค์ฝ”ํ”„์ธ ์ „์—ญ ์Šค์ฝ”ํ”„ ์ƒ์„ฑ - ์ „์—ญ ์ฝ”๋“œ๊ฐ€ ํ‰๊ฐ€๋˜๋ฉด ์ „์—ญ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๊ฐ€ ์ƒ์„ฑ ํ•จ์ˆ˜ ์ฝ”๋“œ - ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ์กด์žฌํ•˜๋Š” ์†Œ์Šค์ฝ”๋“œ - ์ง€์—ญ ์Šค์ฝ”ํ”„๋ฅผ ์ƒ์„ฑ - ํ•จ์ˆ˜ ์ฝ”๋“œ๊ฐ€ ํ‰๊ฐ€๋˜๋ฉด ํ•จ์ˆ˜ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๊ฐ€ ์ƒ์„ฑ eval ์ฝ”๋“œ - ๋นŒํŠธ์ธ ์ „์—ญ ํ•จ์ˆ˜์ธ eval ํ•จ์ˆ˜์— ์ธ์ž๋กœ ์ „๋‹ฌ๋˜์–ด ์‹คํ–‰๋˜๋Š” ์†Œ..

[JavaScript] ๋นŒํŠธ์ธ ๊ฐ์ฒด

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด์˜ ๋ถ„๋ฅ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํฌ๊ฒŒ 3๊ฐœ์˜ ๊ฐ์ฒด๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ข…๋ฅ˜ ์„ค๋ช… ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด - ESMAScript ์‚ฌ์–‘์— ์ •์˜๋œ ๊ฐ์ฒด - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์—ญ์˜ ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ์ œ๊ณต - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ํ™˜๊ฒฝ๊ณผ ๊ด€๊ณ„์—†์ด ์–ธ์ œ๋‚˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ - ์ „์—ญ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋กœ์„œ ์ œ๊ณต๋จ - ๋ณ„๋„์˜ ์„ ์–ธ ์—†์ด ์ „์—ญ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์–ธ์ œ๋‚˜ ์ฐธ์กฐ ๊ฐ€๋Šฅ ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ํ™˜๊ฒฝ์—์„œ ์ถ”๊ฐ€๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฐ์ฒด (ESMAScript ์‚ฌ์–‘์— ์ •์˜๋œ ๊ฐ์ฒดX) - ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ : *ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ Web API๋ฅผ ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด๋กœ ์ œ๊ณต - Node.js ํ™˜๊ฒฝ : ๊ณ ์œ ์˜ API๋ฅผ ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด๋กœ ์ œ๊ณต ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด - ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ •์˜ํ•œ ๊ฐ์ฒด (ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด์™€ ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด์ฒ˜๋Ÿผ ๊ธฐ๋ณธ ์ œ๊ณต๋˜๋Š” ๊ฐ์ฒดX)..

[JavaScript] strict mode

strict mode๋ž€? ES5๋ถ€ํ„ฐ ์ถ”๊ฐ€๋œ strict mode(์—„๊ฒฉ ๋ชจ๋“œ)๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์˜ ๋ฌธ๋ฒ•์„ ์ข€๋” ์—„๊ฒฉํžˆ ์ ์šฉํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ฑฐ๋‚˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์˜ ์ตœ์ ํ™” ์ž‘์—…์— ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋ช…์‹œ์ ์ธ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๋ฅผ ์ค„์—ฌ ์•ˆ์ •์ ์ธ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ, ์ž ์žฌ์ ์ธ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ ์–ด๋ ค์šด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ธ strict mode๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. *ESLint : ์ •์  ๋ถ„์„๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์Šค์บ”ํ•˜์—ฌ ๋ฌธ๋ฒ•์  ์˜ค๋ฅ˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž ์žฌ์  ์˜ค๋ฅ˜๊นŒ์ง€ ์ฐพ์•„๋‚ด๊ณ  ์˜ค๋ฅ˜์˜ ์›์ธ์„ ๋ฆฌํฌํŒ…ํ•ด์ฃผ๋Š” ์œ ์šฉํ•œ ๋„๊ตฌ. ๋ฆฐํŠธ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•˜๋ฉด strict mode์™€ ์œ ์‚ฌํ•œ ํšจ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์–ด ์‹ค์ œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋Š” ESLint..

[JavaScript] ํ”„๋กœํ† ํƒ€์ž…

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ช…๋ นํ˜•, ํ•จ์ˆ˜ํ˜•, ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง€์›ํ•˜๋Š” ๋ฉ€ํ‹ฐ ํŒจ๋Ÿฌ๋‹ค์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. C++๋‚˜ ์ž๋ฐ”์™€ ๊ฐ™์€ ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ณด๋‹ค ํšจ์œจ์ ์ด๋ฉฐ ๋” ๊ฐ•๋ ฅํ•œ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Šฅ๋ ฅ์„ ์ง€๋‹ˆ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ช…๋ น์–ด ๋˜๋Š” ํ•จ์ˆ˜์˜ ๋ชฉ๋ก์œผ๋กœ ๋ณด๋Š” ์ „ํ†ต์ ์ธ ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ ˆ์ฐจ์ง€ํ–ฅ์  ๊ด€์ ์—์„œ ๋ฒ—์–ด๋‚˜ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ์  ๋‹จ์œ„, ์ฆ‰ ๊ฐ์ฒด์˜ ์ง‘ํ•ฉ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ํ‘œํ˜„ํ•˜๋ ค๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์ž…๋‹ˆ๋‹ค. // ์ด๋ฆ„๊ณผ ์ฃผ์†Œ ์†์„ฑ์„ ๊ฐ–๋Š” ๊ฐ์ฒด const person = { name: 'Lee', address: 'Seoul' }; const circle = { radius: 5, getDiameter() { return 2 * radi..

[JavaScript] ํ•จ์ˆ˜์™€ ์ผ๊ธ‰ ๊ฐ์ฒด

์ผ๊ธ‰ ๊ฐ์ฒด ์ผ๊ธ‰ ๊ฐ์ฒด๋ž€, ๋‹ค์Œ๊ณผ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ๋ฌด๋ช…์˜ ๋ฆฌํ„ฐ๋Ÿด๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๋Ÿฐํƒ€์ž„์— ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ณ€์ˆ˜๋‚˜ ์ž๋ฃŒ๊ตฌ์กฐ(๊ฐ์ฒด, ๋ฐฐ์—ด ๋“ฑ)์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ•จ์ˆ˜๋Š” ๋‹ค์Œ ์˜ˆ์ œ์™€ ๊ฐ™์ด ์œ„์˜ ์กฐ๊ฑด์„ ๋ณด๋‘ ๋งŒ์กฑํ•˜๋ฏ€๋กœ ์ผ๊ธ‰ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. // 1. ํ•จ์ˆ˜๋Š” ๋ฌด๋ช… ๋ฆฌํ„ฐ๋Ÿด๋กœ ์ƒ์„ฑ ๊ฐ€๋Šฅ // 2. ํ•จ์ˆ˜๋Š” ๋ณ€์ˆ˜์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ // ๋Ÿฐํƒ€์ž„(ํ• ๋‹น ๋‹จ๊ณ„)์— ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์ด ํ‰๊ฐ€๋˜์–ด ํ•จ์ˆ˜ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๋ณ€์ˆ˜์— ํ• ๋‹น๋จ const increase = function (num) { return ++num; }; const decrease = function (num) { return --num; }; // 2. ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด..