λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

JavaScript

(6)
μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ ES6 ~ES2014 ECMAScript(ECMA-262) λŠ” Javascript λͺ…μ„Έ λ˜λŠ” μŠ€νŽ™μ„ μ˜λ―Έν•©λ‹ˆλ‹€. ECMA-262 : ECMA인터내셔널(ν‘œμ€€κΈ°κ΅¬)은 ECMAScript μ–Έμ–΄μ˜ 곡식 사양인 ECMA-262 ν‘œμ€€μ„ λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€. 즉, ECMAScriptλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ ν‘œμ€€μ΄λ©° λΌˆλŒ€(core)λ₯Ό κ΅¬μ„±ν•˜λŠ” 슀크립트 μ–Έμ–΄μž…λ‹ˆλ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” ECMAScript λͺ…μ„Έ λ˜λŠ” μŠ€νŽ™μ„ λ”°λ₯΄λŠ” 슀크립트 언어라고 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ECMAScript 6 (2015) ES6μ—λŠ” λ‹€μŒκ³Ό 같은 μƒˆλ‘œμš΄ κΈ°λŠ₯이 μΆ”κ°€ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. - arrows (ν™”μ‚΄ν‘œ ν•¨μˆ˜) - classes (클래슀) - enhanced object literals (object λ©”μ†Œλ“œ μ„ μ–Έ 및 속성(동적) μ„ μ–Έ) - template strings (ν…œν”Œλ¦Ώ λ¬Έμžμ—΄)..
μ›Ή ν‘œμ€€κ³Ό μ›Ή μ ‘κ·Όμ„± μ›Ή ν‘œμ€€μ€ μ–΄λ–€ ν™˜κ²½μ—μ„œλ„ μ΄μš©ν•  수 μžˆλŠ” μ›ΉνŽ˜μ΄μ§€λ₯Ό, μ›Ή 접근성은 μ–΄λ–€ μ‚¬λžŒμ΄λ“  μ΄μš©ν•  수 μžˆλŠ” μ›ΉνŽ˜μ΄μ§€λ₯Ό λ§Œλ“€ 수 μžˆλŠ” 방법을 λ‹΄κ³  μžˆλ‹€. μ›Ή ν‘œμ€€μ΄λž€? W3C(Wordl Wide Web Consortium)μ—μ„œ κΆŒκ³ ν•˜λŠ” μ›Ήμ—μ„œ ν‘œμ€€μ μœΌλ‘œ μ‚¬μš©λ˜λŠ” κΈ°μˆ μ΄λ‚˜ κ·œμΉ™ μ‚¬μš©μžκ°€ μ–΄λ– ν•œ μš΄μ˜μ²΄μ œλ‚˜ λΈŒλΌμš°μ €λ₯Ό μ‚¬μš©ν•˜λ”λΌλ„ μ›ΉνŽ˜μ΄μ§€κ°€ λ™μΌν•˜κ²Œ 보이고 μ •μƒμ μœΌλ‘œ μž‘λ™ν•  수 μžˆλ„λ‘ ν•˜λŠ” μ›ΉνŽ˜μ΄μ§€ μ œμž‘ 기법을 λ‹΄κ³ μžˆλ‹€. μ›Ή κ°œλ°œμ— μ‚¬μš©ν•˜λŠ” 언어인 HTML, CSS, JavaScript λ“±μ˜ κΈ°μˆ μ„ 닀룬닀. ν˜„μž¬λŠ” 크둬, μ—£μ§€, μ‚¬νŒŒλ¦¬ λ“± μ΅œμ‹  μ›Ή λΈŒλΌμš°μ €λ“€μ€ λͺ¨λ‘ μ›Ήν‘œμ€€μ„ μ§€μ›ν•œλ‹€. μ›Ή ν‘œμ€€μ— λ§žμΆ”μ–΄ μ›ΉνŽ˜μ΄μ§€λ₯Ό μž‘μ„±ν•˜λ©΄ μ–΄λ–€ λΈŒλΌμš°μ €λ₯Ό μ‚¬μš©ν•˜λ“  λ™μΌν•œ 결과물을 얻을 수 μžˆλ‹€. μ›Ή ν‘œμ€€μ„ μ€€μˆ˜ν•˜λŠ” 방법 1. DOCTYP..
λͺ¨λ“ˆ λ²ˆλ“€λŸ¬μ™€ Webpack JavaScript ν”„λ ˆμž„μ›Œν¬μΈ React, Vue, Svelte, Angular 등을 μ‚¬μš©ν•˜λ‹€ 보면 λͺ¨λ“ˆ λ²ˆλ“€λŸ¬(module bundler)λŠ” ν•„μˆ˜μ μœΌλ‘œ μ–ΈκΈ‰λ˜λŠ” λ‚΄μš©μž…λ‹ˆλ‹€. λͺ¨λ“ˆ λ²ˆλ“€λŸ¬λŠ” JavaScript λͺ¨λ“ˆμ„ λΈŒλΌμš°μ €μ—μ„œ μ‹€ν–‰ν•  수 μžˆλŠ” 단일 JavaScript 파일둜 λ¬ΆλŠ” 데 μ‚¬μš©λ˜λŠ” λ„κ΅¬μž…λ‹ˆλ‹€. λͺ¨λ“ˆ(Module) μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ κΈ°λŠ₯이 λ§Žμ•„μ§ˆμˆ˜λ‘ μž‘μ„±ν•΄μ•Όν•˜λŠ” μ½”λ“œκ°€ κΈΈμ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. λͺ¨λ“  μ½”λ“œλ₯Ό ν•œ 개의 νŒŒμΌμ— μž‘μ„±ν•˜λŠ” λŒ€μ‹  κΈ°λŠ₯(λ³€μˆ˜, 객체, λ°°μ—΄, ν•¨μˆ˜, 클래슀 λ“±)에 따라 λ³„λ„μ˜ νŒŒμΌμ— μ½”λ“œλ₯Ό 뢄리할 수 μžˆμŠ΅λ‹ˆλ‹€. μ½”λ“œλ₯Ό λΆ„λ¦¬ν•˜λŠ” 기쀀에 따라 파일이 μƒλ‹Ήνžˆ λ§Žμ•„μ§ˆ 수 μžˆμ§€λ§Œ, ν•œ 개의 νŒŒμΌμ— μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 것보닀 체계적이고 μœ μ§€λ³΄μˆ˜κ°€ μ‰¬μ›Œμ§‘λ‹ˆλ‹€. κ²°κ΅­ λͺ¨λ“ˆμ€ λΆ„λ¦¬λœ νŒŒμΌμ„ μ˜λ―Έν•©λ‹ˆ..
μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ Promise와 await/async Promise μžλ°”μŠ€ν¬λ¦½νŠΈ Promise κ°μ²΄λŠ” 비동기 μž‘μ—…μ˜ μ΅œμ’… μ™„λ£Œ λ˜λŠ” μ‹€νŒ¨λ₯Ό λ‚˜νƒ€λ‚΄λŠ” λ…μžμ μΈ 객체이닀. 비동기 μž‘μ—…μ΄ 끝날 λ•ŒκΉŒμ§€ κ²°κ³Όλ₯Ό κΈ°λ‹€λ¦¬λŠ” 것이 μ•„λ‹ˆλΌ, κ²°κ³Όλ₯Ό μ œκ³΅ν•˜κ² λ‹€λŠ” '약속'을 λ°˜ν™˜ν•œλ‹€λŠ” μ˜λ―Έμ—μ„œ Promise라 λͺ…λͺ… μ§€μ–΄μ‘Œλ‹€κ³  ν•œλ‹€. Promise 객체λ₯Ό μƒμ„±ν•˜λ €λ©΄ new ν‚€μ›Œλ“œμ™€ Promise μƒμ„±μž ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€. μ΄λ•Œ Promise μƒμ„±μž μ•ˆμ— λ‘κ°œμ˜ λ§€κ°œλ³€μˆ˜λ₯Ό κ°€μ§„ 콜백 ν•¨μˆ˜λ₯Ό λ„£κ²Œ λ˜λŠ”λ°, 첫 번째 μΈμˆ˜λŠ” μž‘μ—…μ΄ μ„±κ³΅ν–ˆμ„ λ•Œ 성곡(resolve)μž„μ„ μ•Œλ €μ£ΌλŠ” 객체이며, 두 번째 μΈμˆ˜λŠ” μž‘μ—…μ΄ μ‹€νŒ¨ν–ˆμ„ λ•Œ μ‹€νŒ¨(reject)μž„μ„ μ•Œλ €μ£ΌλŠ” 였λ₯˜ 객체이닀. const myPromise = new Promise((resolve, reject) => { // 비동기 μž‘μ—…..
μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 호좜 μŠ€νƒκ³Ό 이벀트 루프 μžλ°”μŠ€ν¬λ¦½νŠΈ λŸ°νƒ€μž„ ν™˜κ²½ Call stackκ³Ό Event loopλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λ™μž‘ 원리λ₯Ό μ΄ν•΄ν•˜κΈ° μœ„ν•΄ κΌ­ μˆ™μ§€ν•΄μ•Όν•˜λŠ” κ°œλ…μ΄λ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ‹€ν–‰λ˜λŠ” ν™˜κ²½μ„ μ˜λ―Έν•˜λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ λŸ°νƒ€μž„ ν™˜κ²½μ€ λ‹€μŒκ³Ό 같이 κ΅¬μ„±λ˜μ–΄ μžˆλ‹€. 크게 Memory heap, call stack, web apis, callback queue, event loopκ°€ μžˆλ‹€. Call Stack 호좜 μŠ€νƒμ€ ν•¨μˆ˜μ˜ ν˜ΈμΆœμ„ μŠ€νƒ λ°©μ‹μœΌλ‘œ κΈ°λ‘ν•˜λŠ” μžλ£Œκ΅¬μ‘°λ‹€. ν”„λ‘œκ·Έλž¨μ—μ„œ μš”μ²­μ΄ λ“€μ–΄μ˜¬ λ•Œλ§ˆλ‹€ μˆœμ„œλŒ€λ‘œ μŠ€νƒμ— λ‹΄κ³ , κ°€μž₯ λ‚˜μ€‘μ— λ“€μ–΄μ˜¨ μž‘μ—…μ„ λ¨Όμ € μ²˜λ¦¬ν•˜λŠ” LIFO(Last In First Out) ꡬ쑰이닀. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ‹±κΈ€ μŠ€λ ˆλ“œ 기반 언어이기 λ•Œλ¬Έμ— ν•˜λ‚˜μ˜ 호좜 μŠ€νƒλ§Œμ„ κ°€μ§€κ³  있고, ν•œ λ²ˆμ— ν•˜λ‚˜μ˜ task만 μ²˜λ¦¬ν•  수 ..
μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 비동기 μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ‹±κΈ€ μŠ€λ ˆλ“œ 언어이기 λ•Œλ¬Έμ— ν•œ λ²ˆμ— ν•˜λ‚˜μ˜ μž‘μ—…λ§Œ μˆ˜ν–‰ν•  수 μžˆλ‹€. 이전 μž‘μ—…μ΄ μ™„λ£Œλ˜μ–΄μ•Ό λ‹€μŒ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλ‹€. μ΄λŸ¬ν•œ μ½”λ“œ 순차 싀행을 동기(Synchronous)라고 ν•œλ‹€. κ·ΈλŸ¬λ‚˜ μž‘μ—…μ΄ 였래 κ±Έλ¦¬κ±°λ‚˜ 응닡이 λŠ¦μ–΄μ§€λŠ” κ²½μš°μ— 전체적인 μ„±λŠ₯에 영ν–₯을 쀄 수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄ μ„œλ²„μ— 데이터λ₯Ό μš”μ²­ν•˜κ³  응닡을 λ°›μ•„μ•Ό ν•˜λŠ” μž‘μ—…μ΄ μžˆλ‹€λ©΄, 응닡이 올 λ•ŒκΉŒμ§€ λŒ€κΈ°ν•΄μ•Ό ν•œλ‹€. μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ„μž…λœ κ°œλ…μ΄ 비동기(Asynchronous)이닀. λΉ„λ™κΈ°λŠ” νŠΉμ • μž‘μ—…μ˜ μ™„λ£Œλ₯Ό 기닀리지 μ•Šκ³  λ‹€λ₯Έ μž‘μ—…μ„ λ™μ‹œμ— μˆ˜ν–‰ν•  수 있게 ν•œλ‹€. λΉ„λ™κΈ°λŠ” 메인 μŠ€λ ˆλ“œκ°€ μž‘μ—…μ„ λ‹€λ₯Έ 곳에 μΈκ°€ν•˜μ—¬ 처리되게 ν•˜κ³ , κ·Έ μž‘μ—…μ΄ μ™„λ£Œλ˜λ©΄ 콜백 ν•¨μˆ˜λ₯Ό λ°›μ•„ μ‹€ν–‰ν•˜λŠ” λ°©μ‹μœΌλ‘œ, μ‰½κ²Œ 말해 μž‘μ—…μ„ 백그라운..