๐Ÿ“ƒ Front-End

๐Ÿ“ƒ Front-End/JavaScript

Async / Await

async/await ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋น„๋™๊ธฐ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๋น„๊ต์  ์‰ฝ๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. promise ์‚ฌ์šฉ ํ•˜๊ธฐ ์ „ (๋ฌธ์ œ์ ) function fetchUser(){ // ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š”๋ฐ 10์ดˆ ์ •๋„ ๊ฑธ๋ฆฐ๋‹ค๊ณ  ๊ฐ€์ • return 'hyunho'; } const user = fetchUser() console.log(user) ์œ„์—์ฒ˜๋Ÿผ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์ฝ”๋“œ๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š์œผ๋ฉด, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ๋™๊ธฐ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ฆ‰ ํ•œ์ค„ ํ•œ์ค„์”ฉ ํ•œ์ค„์ด ๋๋‚˜์•ผ ๊ทธ ๋‹ค์Œ ์ค„๋กœ ๋„˜์–ด ๊ฐ‘๋‹ˆ๋‹ค. fetchUser() ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ๊ณณ์œผ๋กœ ๊ฐ€์„œ ํ•จ์ˆ˜์˜ ์ฝ”๋“œ ๋ธ”๋ก์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š”๋ฐ 10์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๋‹ˆ๊นŒ 10์ดˆ๋™์•ˆ ๋จธ๋ฌด๋ฅด๊ณ  ์žˆ๊ณ , ๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ์•ผ 'hyunho' ๊ฐ€ ๋ฆฌํ„ด์ด..

๐Ÿ“ƒ Front-End/JavaScript

Promise

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋น„๋™๊ธฐ๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ฐ์ฒด ์ •ํ•ด์ง„ ์žฅ์‹œ๊ฐ„์˜ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋‚˜์„œ ์ •์ƒ์ ์œผ๋กœ ๊ธฐ๋Šฅ์ด ์ˆ˜ํ–‰์ด ๋˜์–ด์ง€๋ฉด ์„ฑ๊ณต์˜ ๋ฉ”์„ธ์ง€์™€ ํ•จ๊ป˜ ์ฒ˜๋ฆฌ๋œ ๊ฒฐ๊ณผ ๊ฐ’์„ ์ „๋‹ฌ ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ, ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋‹ค๊ฐ€ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด error ๋ฅผ ์ „๋‹ฌ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ๋„คํŠธ์›Œํฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ฑฐ๋‚˜ ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ๊ณผ์ •์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š”๋ฐ ๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ์•ž์„  ์ผ๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ ๋‹ค์Œ ๋ผ์ธ์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์ผ ๋“ค์€ promise ๋ฅผ ํ†ตํ•ด ๋น„๋™๊ธฐ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. promise ์˜ ์ƒํƒœ promise๋Š” state์™€ result 2๊ฐ€์ง€ ์ˆจ๊น€ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. result๋Š” resolve(value)๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด value..

๐Ÿ“ƒ Front-End/JavaScript

AJAX

Asynchronous Javascript And Xml(๋น„๋™๊ธฐ์‹ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ xml)์˜ ์•ฝ์ž AJAX ๋ž€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด์„œ ์„œ๋ฒ„์™€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ํ†ต์‹  ๊ธฐ๋Šฅ ์ž…๋‹ˆ๋‹ค. Ajax ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ธฐ์กด ํŽ˜์ด์ง€์˜ ํ™”๋ฉด ๋ฐ ๋™์ž‘์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ  ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค XMLHttpRequest API๋Š” ๋น„๋™๊ธฐ ํ†ต์‹ ์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ตœ๊ทผ์—๋Š” fetch API๊ฐ€ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ ํ†ต์‹  ์š”์ฒญ์„ ๋ณด๋‚ธ ํ›„ ์‘๋‹ต๊ณผ๋Š” ์ƒ๊ด€์—†์ด ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹ ์›นํŽ˜์ด์ง€๋ฅผ ๋ฆฌ๋กœ๋“œ ํ•˜์ง€ ์•Š๊ณ ๋„ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ AJAX ์˜ ์žฅ์  ์ƒํ˜ธ์ž‘์šฉ์„ฑ์ด ์ข‹์•„์ง‘๋‹ˆ๋‹ค. ์„œ๋ฒ„์˜ ์ƒˆ๋กœ์šด ์ปจํ…์ธ ๋ฅผ ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ๋กœ๋“œํ•  ํ•„์š” ์—†์ด ๋™..

๐Ÿ“ƒ Front-End/JavaScript

ํด๋กœ์ €(closure)

๋‚ด๋ถ€ํ•จ์ˆ˜๊ฐ€ ์™ธ๋ถ€ํ•จ์ˆ˜์˜ ๋งฅ๋ฝ(context)์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. ์–ดํœ˜์  ํ™˜๊ฒฝ(Lexical Environment) // (1) // one : ์ดˆ๊ธฐํ™” X, addOne : function let one; // (2) one : undefined, addOne : function one = 1; // (3) one : 1, addOne : function -> ์ „์—ญ Lexical function addOne(num){ console.log(one + num); } addOne(5); // (4) ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ˆœ๊ฐ„ ์ƒˆ๋กœ์šด Lexical ํ™˜๊ฒฝ์ด ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค. num : 5 (1) : ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ์Šคํฌ๋ฆฝํŠธ ๋‚ด์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋“ค์ด Lexical ํ™˜๊ฒฝ ์— ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค. (4) ์—์„œ ํ•จ์ˆ˜๊ฐ€ ๋„˜๊ฒจ๋ฐ›..

๐Ÿ“ƒ Front-End/JavaScript

class

ES6 ๋ถ€ํ„ฐ ์ถ”๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ •์˜ ํ•จ์ˆ˜์˜ ํ•œ ์ข…๋ฅ˜์ด๋ฉฐ, ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ…œํ”Œ๋ฆฟ(ํ‹€) ์ž…๋‹ˆ๋‹ค. ํด๋ž˜์Šค ์•ˆ์—๋Š” ์†์„ฑ(field), ํ–‰๋™(method) ์ด ์žˆ์Šต๋‹ˆ๋‹ค. class ๋Š” ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ ์™€ ์ด๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋ฉ”์„œ๋“œ ๋ฅผ ํ•˜๋‚˜๋กœ ์ถ”์ƒํ™” ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ๋ฒ• class Person{ constructor(name, age){ // ์†์„ฑ this.name = name; // ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ’ this.age = age; } // ํ–‰๋™ speak(){ console.log(`${this.name} : hello`) } } // object , ์ƒˆ๋กœ์šด object๋ฅผ ๋งŒ๋“ค ๋•Œ new ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉ ํ•ฉ๋‹ˆ๋‹ค. const hyunho = new Person('hyunho', 26) console.log(hyun..

๐Ÿ“ƒ Front-End/JavaScript

์ƒ์„ฑ์ž ํ•จ์ˆ˜

ํ•„์š”ํ•œ ์žฌ๋ฃŒ๋“ค์„ ๋„ฃ์–ด์ฃผ๊ณ  ์ฐ์–ด๋‚ด๋Š” ๋ถ•์–ด๋นต ํŒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฌธ๋ฒ• function User(name, age){ // ์ฒซ ๊ธ€์ž๋Š” ๋Œ€๋ฌธ์ž๋กœ this.name = name; this.age = age; } let user1 = new User("Mike", 30); let user2 = new User("Jan", 17); let user3 = new User("Tom", 20); new ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ถœ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด { ... } ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์ฒด๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ผ์ผ์ด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅด๊ณ  ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์ž‘ ์›๋ฆฌ function User(name, age){ // this = {}; -> ๋นˆ ๊ฐ์ฒด๊ฐ€ ์ž„์‹œ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง // ์ƒˆ๋กœ์šด ํ”„๋กœํผํ‹ฐ..

๐Ÿ“ƒ Front-End/JavaScript

Event Loop

๋จผ์ €, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„ ์•ˆ์—๋Š” Memory Heap ๊ณผ Call Stack ๋กœ ๋‚˜๋‰˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Memory Heap ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค ๋•Œ, ์ฆ‰ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด์„œ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํ• ๋‹นํ•˜๊ฑฐ๋‚˜ ๋ฌธ์ž ๋˜๋Š” ์ˆซ์ž๋ฅผ ํ• ๋‹นํ•˜๊ฒŒ ๋˜๋ฉด ์ „๋ถ€ ๋ฉ”๋ชจ๋ฆฌ ํž™์— ์ €์žฅ ๋ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์ผ์–ด๋‚˜๋Š” ๊ณณ Call Stack ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ˆœ์„œ์— ๋”ฐ๋ผ์„œ ์ฐจ๊ณก์ฐจ๊ณก ์Œ“์•„๋†“๋Š” ๊ฒƒ ์ฝ”๋“œ ์‹คํ–‰์— ๋”ฐ๋ผ ํ˜ธ์ถœ ์Šคํƒ์ด ์Œ“์ด๋Š” ๊ณณ LIFO(Last In First Out) : ์ œ์ผ ๋‚˜์ค‘์— ๋“ค์–ด์˜จ ๊ฒƒ์ด ์ œ์ผ ์ฒ˜์Œ์œผ๋กœ ๋‚˜๊ฐ‘๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด ์ž์ฒด์—๋Š” ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ์ด ์—†์Šต๋‹ˆ๋‹ค. Process ์šด์˜์ฒด์ œ ์œ„์—์„œ ์—ฐ์†์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‹คํ–‰ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ..

๐Ÿ“ƒ Front-End/JavaScript

์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง, ์ด๋ฒคํŠธ ์บก์ฒ˜๋ง, ์ด๋ฒคํŠธ ์œ„์ž„

๋ธŒ๋ผ์šฐ์ €๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, capturing -> bubbling ์ˆœ์œผ๋กœ ์ด๋ฒคํŠธ๋ฅผ ๊ฐ์ง€ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง (Event Bubbling) ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง์€ ํŠน์ • ํ™”๋ฉด ์š”์†Œ์—์„œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํ•ด๋‹น ์ด๋ฒคํŠธ๊ฐ€ ๋” ์ƒ์œ„์˜ ์š”์†Œ์—๊ฒŒ ์ „๋‹ฌ๋˜์–ด ๊ฐ€๋Š” ํŠน์„ฑ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ƒ์œ„์˜ ํ™”๋ฉด ์š”์†Œ๋ž€? HTML ์š”์†Œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.์—ฌ๊ธฐ์„œ๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ์ƒ์œผ๋กœ ํ•œ ๋‹จ๊ณ„ ์œ„์— ์žˆ๋Š” ์š”์†Œ๋ฅผ ์ƒ์œ„ ์š”์†Œ๋ผ๊ณ  ํ•˜๋ฉฐ body ํƒœ๊ทธ๋ฅผ ์ตœ์ƒ์œ„ ์š”์†Œ๋ผ๊ณ  ๋ถ€๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. const one = document.querySelector(".one"); const two = document.querySelector(".two"); const three = document.querySelector(".three"); one.ad..

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