๐Ÿ“ƒ Front-End

๐Ÿ“ƒ Front-End/JavaScript

Callback Function

ํ•จ์ˆ˜ ํ”„๋กœ๊ทธ๋žจ ์•ˆ์—์„œ ๊ฐ๊ฐ์˜ ์ž‘์€ ๊ธฐ๋Šฅ๋“ค์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋Š” ํ•œ ๊ฐ€์ง€์˜ ์ผ๋งŒ ํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜์˜ ์ด๋ฆ„์„ ๋ณด๊ณ  ํ•จ์ˆ˜์˜ ๊ธฐ๋Šฅ์„ ์•Œ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. // ๊ธฐ๋ณธํ˜• function ํ•จ์ˆ˜๋ช… (){ ์ฝ”๋“œ }; ํ•จ์ˆ˜๋ช…() // ํ˜ธ์ถœ // ๋งค๊ฐœ๋ณ€์ˆ˜ function ํ•จ์ˆ˜๋ช… (๋งค๊ฐœ๋ณ€์ˆ˜){ ์ฝ”๋“œ }; ํ•จ์ˆ˜๋ช…(๋งค๊ฐœ๋ณ€์ˆ˜) // ํ˜ธ์ถœ ์ฝœ๋ฐฑํ•จ์ˆ˜ ? ํ•จ์ˆ˜ ์•ˆ์— ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•ด์„œ ์ƒํ™ฉ์— ๋งž๊ฒŒ ํ•จ์ˆ˜๋ฅผ ๋ถ€๋ฅด๋Š” ๊ฒƒ ์ฆ‰, ํŒŒ๋ผ๋ฏธํ„ฐ(๋งค๊ฐœ๋ณ€์ˆ˜)๋กœ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ํ•จ์ˆ˜์˜ ๋‚ด๋ถ€์—์„œ ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ฝœ๋ฐฑํ•จ์ˆ˜๋ผ ํ•ฉ๋‹ˆ๋‹ค. const printYes = function () { console.log('yes') } const printNo = function print() { console.log('no'..

๐Ÿ“ƒ Front-End/JavaScript

ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ๊ณผ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์˜ ์ฐจ์ด์ 

์ฒซ ๋ฒˆ์งธ ์ฐจ์ด๋Š” ๋ฌธ๋ฒ•์  ์ฐจ์ด ์ž…๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ: function ํ•จ์ˆ˜์ด๋ฆ„() { ... } ํ•จ์ˆ˜ ํ‘œํ˜„์‹: const func = function () { ... } ๋‘ ๋ฒˆ์งธ ์ฐจ์ด๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ์–ธ์ œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š”์ง€ ์ž…๋‹ˆ๋‹ค. -> ํ˜ธ์ด์ŠคํŒ…์˜ ์˜ํ–ฅ์„ ๋ฐ›๋Š”์ง€ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ ์‹ค์ œ ์‹คํ–‰ ํ๋ฆ„ ์ด ํ•ด๋‹น ํ•จ์ˆ˜์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹คํ–‰ ํ๋ฆ„์ด ํ•จ์ˆ˜์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ ๋ถ€ํ„ฐ ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์€ ์‹ค์ œ ์‹คํ–‰ ํ๋ฆ„์ด ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์ด ์ •์˜๋˜์–ด ์žˆ๋Š” ๋ถ€๋ถ„์— ๋„๋‹ฌํ•˜๊ธฐ ์ „์—๋„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ˜ธ์ด์ŠคํŒ… ์— ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ // ์‹คํ–‰ ์ „ logMessage(); sumNumbers(); function logMessage() { return 'work..

๐Ÿ“ƒ Front-End/JavaScript

Hoisting(ํ˜ธ์ด์ŠคํŒ…)

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์„ ์–ธ ์ „์— ๋ฏธ๋ฆฌ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰ํ•˜๊ธฐ ์ „ ๋ณ€์ˆ˜์„ ์–ธ/ํ•จ์ˆ˜์„ ์–ธ ์ด ํ•ด๋‹น ์Šค์ฝ”ํ”„์˜ ์ตœ์ƒ๋‹จ์œผ๋กœ ๋Œ์–ด ์˜ฌ๋ ค์ง€๋Š” ๊ฒƒ๊ฐ™์€ ํ˜„์ƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ด์ŠคํŒ…์€ ์Šค์ฝ”๋“œ ๋‹จ์œ„๋กœ ๋ฐœ์ƒ ํ•ฉ๋‹ˆ๋‹ค. environmentRecord ๊ณผ hoisting์˜ ์—ฐ๊ด€ environmentRecord ๋Š” ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ๊ฐ์ฒด๋Š” ํ™œ์„ฑํ™”๋˜๋Š” ์‹œ์ ์— VariableEnvironment, LexicalEnviornment ํ™˜๊ฒฝ์— ์†ํ•ฉ๋‹ˆ๋‹ค. environmentRecord ๋Š” ๋ณ€์ˆ˜๋ช…๋งŒ ๋Œ์–ด์˜ฌ๋ฆฌ๊ณ  ํ• ๋‹น ๊ณผ์ •์€ ๊ทธ๋Œ€๋กœ ๋‚จ๊ฒจ๋‘๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. environmentRecord ๋Š” ํ˜„์žฌ ์ปจํ…์ŠคํŠธ์™€ ๊ด€๋ จ๋œ ์ฝ”๋“œ์˜ ์‹๋ณ„์ž ์ •๋ณด๋“ค์ด ์ €์žฅ ๋ฉ๋‹ˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜ ์‹๋ณ„์ž ํ•จ์ˆ˜ ์ž์ฒด ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ์‹๋ณ„์ž hoisti..

๐Ÿ“ƒ Front-End/JavaScript

์‹คํ–‰ ์ปจํ…์ŠคํŠธ(Execution Context)

์ถ”์ƒ์ ์ธ ๊ฐœ๋…, ์‹คํ–‰ํ•  ์ฝ”๋“œ์— ์ œ๊ณตํ•  ํ™˜๊ฒฝ ์ •๋ณด๋“ค์„ ๋ชจ์•„๋†“์€ ๊ฐ์ฒด Stack, Queue Stack: LIFO (Last In First Out) Queue: FIFO (First In First Out) Stack ์—์„œ๋Š” ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋“ค์–ด์˜จ d,c,b,a ์ˆœ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Queue ์—์„œ๋Š” ์ œ์ผ ๋จผ์ € ๋“ค์–ด์˜จ a,b,c,d ์ˆœ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹คํ–‰ ์ปจํƒ์ŠคํŠธ์˜ ๋™์ž‘์€, ๋™์ผํ•œ ํ™˜๊ฒฝ์— ์žˆ๋Š” ์ฝ”๋“œ๋“ค์„ ์‹คํ–‰ํ•  ๋•Œ ํ•„์š”ํ•œ ํ™˜๊ฒฝ์ •๋ณด๋ฅผ ๋ชจ์•„ ์ปจํ…์ŠคํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ , ์ด๋ฅผ ์ฝœ ์Šคํƒ์— ์Œ“์•„๋†“์€ ๋’ค, ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ์ปจํ…์ŠคํŠธ์™€ ๊ด€๋ จ ์žˆ๋Š” ์ฝ”๋“œ๋“ค์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ฝ”๋“œ์˜ ํ™˜๊ฒฝ๊ณผ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์˜ ๊ตฌ์„ฑ ๋ฐฉ๋ฒ• ์ „์—ญ ๊ณต๊ฐ„ → ์ž๋™ ์‹คํ–‰ eval() ํ•จ์ˆ˜ → ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ ..

๐Ÿ“ƒ Front-End/JavaScript

๋ณ€์ˆ˜ ์„ ์–ธ, ์ดˆ๊ธฐํ™”, ํ• ๋‹น

์ปดํ“จํ„ฐ์— ๋ณ€์ˆ˜์˜ ์ •์ฒด๋ฅผ ์•Œ๋ฆฌ๊ณ , ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ณ , ์›ํ•˜๋Š” ๊ฐ’์„ ์ฃผ๋Š” ๊ณผ์ •์ด ๋ณ€์ˆ˜ ์„ ์–ธ, ์ดˆ๊ธฐํ™”, ํ• ๋‹น ๊ณผ์ • ์ž…๋‹ˆ๋‹ค. ์„ ์–ธ ์„ ์–ธ ๋‹จ๊ณ„์—์„œ๋Š” const, let, var ์ค‘ ํ•„์š”ํ•œ ์„ ์–ธ ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉ ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋ช…์„ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์˜ ๋ณ€์ˆ˜ ๊ฐ์ฒด์— ๋“ฑ๋กํ•˜์—ฌ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์— ๋ณ€์ˆ˜์˜ ์กด์žฌ๋ฅผ ์•Œ๋ฆฝ๋‹ˆ๋‹ค. ์ดˆ๊ธฐํ™” ์„ ์–ธ ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์ด๋ฆ„์ด ์ •ํ•ด์ง„ ๋ณ€์ˆ˜์— ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ณ , ์•”๋ฌต์ ์œผ๋กœ undefined ๋ฅผ ํ• ๋‹น ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์„ ์–ธ ํ‚ค์›Œ๋“œ์— ๋”ฐ๋ผ์„œ ๊ณผ์ •์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. var ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”๊ฐ€ ํ•จ๊ป˜ ์ผ์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜๋กœ ๊ฐ„์ฃผ๋˜์–ด ์„ ์–ธ๋ฌธ ์•ž์—์„œ๋„ ํ•ด๋‹น ๋ณ€์ˆ˜๋Š” ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. var ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์ตœ์ƒ์œ„๋กœ ์ด๋™ํ•˜๊ฒŒ ๋˜๊ณ , var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๊ฐ€..

๐Ÿ“ƒ Front-End/JavaScript

var, let, const

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ณ€์ˆ˜ ๋ฐ ์ƒ์ˆ˜ ์„ ์–ธ ํ‚ค์›Œ๋“œ ์ž…๋‹ˆ๋‹ค. var ์ดˆ๊ธฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ์„ var ๋งŒ์„ ์‚ฌ์šฉ ํ–ˆ์Šต๋‹ˆ๋‹ค. var ํŠน์ง• ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„(Function Level Scope) ๋˜๋Š” ์ „์—ญ ์Šค์ฝ”ํ”„ var a = "a"; function example() { var b = "b"; console.log(a); // a ์ „์—ญ๋ณ€์ˆ˜. ์ถœ๋ ฅ๊ฐ€๋Šฅ. if (true) { var c = "c"; console.log(b); // b - ํ•ด๋‹น ํ•จ์ˆ˜ ๋‚ด ์„ ์–ธํ•œ ๋ณ€์ˆ˜. ์ถœ๋ ฅ ๊ฐ€๋Šฅ. } console.log(c); // c - ํ•ด๋‹น ํ•จ์ˆ˜ ๋‚ด ์„ ์–ธํ•œ ๋ณ€์ˆ˜. ์ถœ๋ ฅ ๊ฐ€๋Šฅ. } example(); // var๋Š” ๋ณ€์ˆ˜์˜ ์ค‘๋ณต ์„ ์–ธ ๊ฐ€๋Šฅ var name = "kim"; console.log(name); // kim var na..

๐Ÿ“ƒ Front-End/JavaScript

๋ณ€์ˆ˜(variable)

ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ™•๋ณดํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์ž์ฒด ๋˜๋Š” ๊ทธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ถ™ํ˜€์ง„ ์ด๋ฆ„ ์‹๋ณ„์ž(Identifier) ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ €์žฅ๋œ ๊ฐ’์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์œ ํ•œ ์ด๋ฆ„ ์–ด๋–ค ๊ฐ’์„ ๊ตฌ๋ณ„ํ•ด์„œ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์œ ํ•œ ์ด๋ฆ„ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„ ์„ ์‹๋ณ„์ž๋ผ๊ณ  ํ‘œํ˜„ํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋ช… ๋„ค์ด๋ฐ ๊ทœ์น™ ๋ณ€์ˆ˜๋ช…์—๋Š” ์˜ค์ง ๋ฌธ์ž์™€ ์ˆซ์ž, ๊ทธ๋ฆฌ๊ณ  ๊ธฐํ˜ธ $์™€ _๋งŒ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๊ธ€์ž๋Š” ์ˆซ์ž๊ฐ€ ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ์•ฝ์–ด๋Š” ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ES6๋ถ€ํ„ฐ๋Š” ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์ง€์› ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ฌธ์ž์™€ ์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ ํ•ฉ๋‹ˆ๋‹ค. ์นด๋ฉœ ํ‘œ๊ธฐ๋ฒ•(camelCase) ์—ฌ๋Ÿฌ ๋‹จ์–ด๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ๋ณ€์ˆ˜๋ช…์„ ๋งŒ๋“ค ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋‹จ์–ด๋ฅผ ์ œ์™ธํ•œ ๊ฐ ๋‹จ์–ด์˜ ์ฒซ ๊ธ€์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. let myVeryLongName ๋ฐ”๋žŒ์ง..

๐Ÿ“ƒ Front-End/JavaScript

JavaScript

๋ฏธ๊ตญ์˜ ๋„ท์Šค์ผ€์ดํ”„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ฆˆ์‚ฌ(Netscape Communications)๊ฐ€ ๊ฐœ๋ฐœํ•œ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด ์ž…๋‹ˆ๋‹ค. JavaScript ? HTML๋กœ๋Š” ์›น์˜ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜๊ณ , CSS๋กœ๋Š” ์›น์„ ๋””์ž์ธํ•˜๋ฉฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ๋Š” ์›น์˜ ๋™์ž‘์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ฃผ๋กœ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜, Node.js๊ฐ™์ด ์„œ๋ฒ„ ์ธก ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JavaScript ์˜ ํŠน์ง• ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐ์ฒด ๊ธฐ๋ฐ˜์˜ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด ์ž…๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๋Š” ์›นํŽ˜์ด์ง€์˜ HTML ์•ˆ์— ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์›นํŽ˜์ด์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ž๋™์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋™์  ํƒ€์ž… ์–ธ์–ด์ด๋ฉฐ, ํƒ€์ž…์„ ๋ช…์‹œํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ์ธํ„ฐํ”„๋ฆฌ์–ด ์–ธ์–ด ์ž…๋‹ˆ๋‹ค. JavaScript ์˜ ์—ญํ•  HTML ํŽ˜์ด์ง€ ..

HoHo.dev
'๐Ÿ“ƒ Front-End' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (3 Page)