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

JavaScript

(10)
λ³€μˆ˜μ˜ ν˜Έμ΄μŠ€νŒ…, TDZ의 κ°œλ… λ°”λ‘œμ•ŒκΈ° ν˜Έμ΄μŠ€νŒ… (Hoisting) μ΄λž€ ? JavaScriptμ—μ„œ ν˜Έμ΄μŠ€νŒ…(hoisting)μ΄λž€, 인터프리터가 λ³€μˆ˜μ™€ ν•¨μˆ˜μ˜ λ©”λͺ¨λ¦¬ 곡간을 μ„ μ–Έ 전에 미리 ν• λ‹Ήν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. -MDN- ν•¨μˆ˜ μ•ˆμ— μžˆλŠ” 선언듀을 λͺ¨λ‘ λŒμ–΄μ˜¬λ €μ„œ ν•΄λ‹Ή ν•¨μˆ˜ 유효 λ²”μœ„(μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ)의 μ΅œμƒλ‹¨μ— μ„ μ–Έν•˜λŠ” 것. ν˜Έμ΄μŠ€νŒ…μ˜ λŒ€μƒ μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” λͺ¨λ“  선언을 ν˜Έμ΄μŠ€νŒ…ν•œλ‹€. 보톡 ν˜Έμ΄μŠ€νŒ…μ€ var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έλœ λ³€μˆ˜μ—μ„œλ§Œ μΌμ–΄λ‚œλ‹€κ³  μƒκ°ν•˜μ§€λ§Œ let, const μ—μ„œλ„ ν˜Έμ΄μŠ€νŒ…μ΄ μΌμ–΄λ‚œλ‹€. λ³€μˆ˜μ˜ 생성 단계λ₯Ό μ•Œμ•„λ³΄λ©΄μ„œ μ΄ν•΄ν•΄λ³΄μž λ³€μˆ˜λŠ” 3개의 단계λ₯Ό 거쳐 생성이 λœλ‹€. 1. 선언단계 μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ λ³€μˆ˜μ˜ 선언은 var, const, let ν‚€μ›Œλ“œλ‘œ ν•  수 있으며, ES6μ—μ„œ const와 let이 μΆ”κ°€λ˜μ—ˆλ‹€. μ„ μ–Έλ‹¨κ³„μ—μ„œλŠ” ..
μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ‹±κΈ€μŠ€λ ˆλ“œμ§€λ§Œ λΉ„λ™κΈ°λ‘œ λ™μž‘ν•˜λŠ” 이유 μš°μ„  글을 μ‹œμž‘ν•˜κΈ° 전에 μŠ€λ ˆλ“œμ— λŒ€ν•œ κ°„λ‹¨ν•œ κ°œλ…λΆ€ν„° μ΄ν•΄ν•˜κ³  κ°€λ©΄ 쒋을 λ“―ν•˜λ‹€. ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œ 차이 ν”„λ‘œμ„ΈμŠ€λŠ” λ©”λͺ¨λ¦¬ μƒμ—μ„œ 싀행쀑인 ν”„λ‘œκ·Έλž¨μ„ λ§ν•˜λ©°, μŠ€λ ˆλ“œλŠ” 이 ν”„λ‘œμ„ΈμŠ€ μ•ˆμ—μ„œ μ‹€ν–‰λ˜λŠ” 흐름 λ‹¨μœ„λ₯Ό λ§ν•œλ‹€. ν”„λ‘œμ„ΈμŠ€λ§ˆλ‹€ μ΅œμ†Œ ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œλ₯Ό λ³΄μœ ν•˜κ³  있으며, 각각 λ³„λ„μ˜ μ£Όμ†Œ 곡간을 λ…λ¦½μ μœΌλ‘œ ν• λ‹Ήλ°›λŠ”λ‹€. (code, data, heap, stack) μŠ€λ ˆλ“œλŠ” 이쀑에 stack만 λ”°λ‘œ ν• λ‹Ήλ°›κ³  λ‚˜λ¨Έμ§€ μ˜μ—­μ€ μŠ€λ ˆλ“œλΌλ¦¬ μ„œλ‘œ κ³΅μœ ν•œλ‹€. ν”„λ‘œμ„ΈμŠ€ : μžμ‹ λ§Œμ˜ 고유 곡간과 μžμ›μ„ ν• λ‹Ήλ°›μ•„ μ‚¬μš© μŠ€λ ˆλ“œ : λ‹€λ₯Έ μŠ€λ ˆλ“œμ™€ 곡간과 μžμ›μ„ κ³΅μœ ν•˜λ©΄μ„œ μ‚¬μš© 즉 μŠ€λ ˆλ“œλŠ” μ‹€ν–‰λ˜λŠ” νλ¦„μ˜ λ‹¨μœ„μ΄λ©° λ©€ν‹°μŠ€λ ˆλ“œ ν™˜κ²½μ—μ„œλŠ” 이 μŠ€λ ˆλ“œκ°€ λ‹€μ€‘μ μœΌλ‘œ 이루어져 있기 λ•Œλ¬Έμ— ν•œ λ²ˆμ— λ§Žμ€ 일듀을 μ²˜λ¦¬ν•  수 μžˆλŠ” 것이닀. ..
λΈŒλΌμš°μ € λ Œλ”λ§ 원리 ( Critical Rendering Path ) λ Œλ”λ§μ΄λž€ μ›Ήμ‚¬μ΄νŠΈμ— url둜 μ ‘κ·Όν–ˆμ„ λ•Œ μ„œλ²„λ‘œλΆ€ν„° 받은 ( HTML,CSS, μžλ°”μŠ€ν¬λ¦½νŠΈ ) λ“±μ˜ 응닡을 화면에 λ‚˜νƒ€λ‚΄λŠ” 것이닀 λΈŒλΌμš°μ € μ—”μ§„ λΈŒλΌμš°μ €λ§ˆλ‹€ λ Œλ”λ§μ„ μˆ˜ν–‰ν•˜λŠ” λ Œλ”λ§ 엔진을 κ°€μ§€κ³  μžˆλ‹€. λΈŒλΌμš°μ € μ—”μ§„ νŒŒμ΄μ–΄ 폭슀 κ²Œμ½” μ—”μ§„ μ‚¬νŒŒλ¦¬, 크둬 μ›Ήν‚· μ—”μ§„ λΈŒλΌμš°μ € λ Œλ”λ§ (Critical Rendering Path) κ³Όμ • Critical Rendering Path(CRP)λŠ” λΈŒλΌμš°μ €κ°€ μ„œλ²„λ‘œλΆ€ν„° HTML 응닡을 λ°›μ•„ 화면을 그리기 μœ„ν•΄ μ‹€ν–‰ν•˜λŠ” 과정이닀. DOM 트리 λ§Œλ“€κΈ° CSSOM 트리 λ§Œλ“€κΈ° Render 트리 λ§Œλ“€κΈ° λ ˆμ΄μ•„μ›ƒ μƒμ„±ν•˜κΈ° νŽ˜μΈνŒ… 이제 각 λ‹¨κ³„λ§ˆλ‹€ μ–΄λ–€ 역할을 ν•˜λŠ”μ§€ μ•Œμ•„λ³΄μž DOM 트리 생성 HTML λ¬Έμ„œλ₯Ό νŒŒμ‹± ν•˜μ—¬ DOM(Document Object Model) 트리λ₯Ό ..
JavaScript (ES6) - μ„œλ²„ ν†΅μ‹ μ˜ μ‹œμž‘ JSON 글을 μž‘μ„±ν•˜κΈ°μ— μ•žμ„œ 이 κ²Œμ‹œκΈ€μ˜ λͺ¨λ“  글은 유튜브 λ“œλ¦Όμ½”λ”© by μ—˜λ¦¬λ‹˜μ˜ λ™μ˜μƒμ΄ μΆœμ²˜μž„μ„ μ•Œλ €λ“œλ¦½λ‹ˆλ‹€. https://www.youtube.com/watch?v=yOdAVDuHUKQ&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2&index=8 JSON JavaScript Object Notation JSON μ΄λž€ μ›Ή λΈŒλΌμš°μ €μ™€ μ›Ή μ„œλ²„ κ°„ 비동기 톡신, μ›Ή μ„œλ²„ κ°„μ˜ 데이터 κ΅ν™˜ 등에 주둜 μ‚¬μš©λœλ‹€ 또 λΈŒλΌμš°μ €λΏλ§Œ μ•„λ‹ˆλΌ λͺ¨λ°”μΌμ—μ„œ μ„œλ²„μ™€ 주고받을 λ•Œ, λ˜λŠ” μ„œλ²„μ™€ 톡신을 ν•˜μ§€ μ•Šμ•„λ„ 였브젝트λ₯Ό νŒŒμΌμ‹œμŠ€ν…œμ— μ €μž₯ν•  λ•Œλ„ JSON을 μ΄μš©ν•œλ‹€! ​ JSON은 key와 value둜 이루어져 μžˆλ‹€ ​ 였브젝트λ₯Ό 직렬화 ( serialize ) ν•΄μ„œ μ–΄λ–»κ²Œ JSON으둜 λ³€ν™˜ν• μ§€, 직렬..
JavaScript (ES6) - Array APIs 총정리 - ( μœ μš©ν•œ 10κ°€μ§€ λ°°μ—΄ ν•¨μˆ˜ ) 글을 μž‘μ„±ν•˜κΈ°μ— μ•žμ„œ 이 κ²Œμ‹œκΈ€μ˜ λͺ¨λ“  글은 유튜브 λ“œλ¦Όμ½”λ”© by μ—˜λ¦¬λ‹˜μ˜ λ™μ˜μƒμ΄ μΆœμ²˜μž„μ„ μ•Œλ €λ“œλ¦½λ‹ˆλ‹€. https://www.youtube.com/watch?v=yOdAVDuHUKQ&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2&index=8 μžλ°”μŠ€ν¬λ¦½νŠΈ λ°°μ—΄μ˜ μœ μš©ν•œ ν•¨μˆ˜λ“€μ„ μ•Œμ•„λ³΄μž ! Join Join은 배열에 μ‘΄μž¬ν•˜λŠ” 데이터듀을 ν•˜λ‚˜μ˜ λ¬Έμžμ—΄λ‘œ λ§Œλ“€μ–΄ μ£ΌλŠ” API이닀 ! λ°”λ‘œ μ½”λ“œλ‘œ μ•Œμ•„λ³΄μž const fruits = ['apple', 'banana', 'orange']; const result = fruits.join(); console.log(result); μš°μ„  fruits λ°°μ—΄ μ•ˆμ— μžˆλŠ” μ„Έ 개의 데이터λ₯Ό result λ³€μˆ˜μ— ν•˜λ‚˜λ‘œ λ§Œλ“€μ–΄ μ£ΌκΈ° μœ„ν•΄ join 을..
JavaScript (ES6) - Prototype μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” κΈ°λ³Έ νƒ€μž…μ„ μ œμ™Έν•œ λͺ¨λ“  것을 객체둜 λΆ„λ₯˜ν•œλ‹€. 즉, number, string, boolean, null, undefined 와 같은 κΈ°λ³Έ νƒ€μž…μ„ μ œμ™Έν•œ λͺ¨λ“  값은 객체닀. λ”°λΌμ„œ λ°°μ—΄, ν•¨μˆ˜, μ •κ·œ ν‘œν˜„μ‹ 등도 λͺ¨λ‘ μžλ°”μŠ€ν¬λ¦½νŠΈ 객체둜 ν‘œν˜„λ©λ‹ˆλ‹€! μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λͺ¨λ“  κ°μ²΄λŠ” μžμ‹ μ˜ λΆ€λͺ¨ 역할을 ν•˜λŠ” 객체와 μ—°κ²°λ˜μ–΄ μžˆλ‹€. 즉, κ°μ²΄λŠ” 객체지ν–₯의 상속 κ°œλ…κ³Ό 같이 λΆ€λͺ¨ 객체의 ν”„λ‘œνΌν‹°λ₯Ό μžμ‹ μ˜ ν”„λ‘œνΌν‹°λ‘œμ¨ μ‚¬μš©ν•  수 μžˆλ‹€ 객체가 생성이 λ˜λ©΄μ„œ μžλ™μ μœΌλ‘œ κ°€μ§€κ²Œ λ˜λŠ” λΆ€λͺ¨ 객체λ₯Ό ν”„λ‘œν† νƒ€μž… 객체 ( Prototype ) 라고 λΆ€λ₯Έλ‹€ 예λ₯Ό 톡해 μ‚΄νŽ΄λ³΄μž Prototype let song = { name: 'song', age: 25, }; let choi = new Object(); choi..
JavaScript (ES6) - Array κ°œλ…κ³Ό APIs 글을 μž‘μ„±ν•˜κΈ°μ— μ•žμ„œ 이 κ²Œμ‹œκΈ€μ˜ 지식은 유튜브 λ“œλ¦Όμ½”λ”© by μ—˜λ¦¬λ‹˜μ˜ λ™μ˜μƒμ΄ μΆœμ²˜μž„μ„ μ•Œλ €λ“œλ¦½λ‹ˆλ‹€. https://www.youtube.com/watch?v=yOdAVDuHUKQ&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2&index=8 Declaration 배열을 μ„ μ–Έν•˜λŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄μž const arr1 = new Array(); 첫 번째둜 μœ„μ™€ 같이 newλ₯Ό μ‚¬μš©ν•˜μ—¬ λ°°μ—΄ 였브젝트λ₯Ό μ„ μ–Έν•˜λŠ” 방식이고 두 번째둜 더 ν”ν•˜κ²Œ μ“°μ΄λŠ” 방법이 μžˆλ‹€ const arr2 = [1, 2, 3, 4]; λŒ€κ΄„ν˜Έ μ•ˆμ— 데이터λ₯Ό μ‚½μž…ν•˜μ—¬ 배열을 생성할 수 μžˆλ‹€ ​ 배열은 Indexλ₯Ό κΈ°μ€€μœΌλ‘œ 데이터가 μ €μž₯이 λœλ‹€ λ°°μ—΄μ˜ 첫 번째 IndexλŠ” 0λ²ˆμ§ΈλΆ€ν„° μ‹œμž‘ν•˜κΈ° λ•Œλ¬Έμ— 1이 μ‚½μž…λœ ..
JavaScript (ES6) - Object 글을 μž‘μ„±ν•˜κΈ°μ— μ•žμ„œ 이 κ²Œμ‹œκΈ€μ˜ 지식은 유튜브 λ“œλ¦Όμ½”λ”© by μ—˜λ¦¬λ‹˜μ˜ λ™μ˜μƒμ΄ μΆœμ²˜μž„μ„ μ•Œλ €λ“œλ¦½λ‹ˆλ‹€. https://www.youtube.com/watch?v=1Lbr29tzAA8&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2&index=7 Object μƒμ„±ν•˜λŠ” 방법 const obj1 = {name: 'song' , age: 25}; 이런 μ‹μœΌλ‘œ λ§Œλ“€ μˆ˜λ„ μžˆλ‹€ 이 방법을 'object literal' 이라고 ν•˜λ©° const obj2 = new Object(); 클래슀λ₯Ό μ΄μš©ν•˜μ—¬ new ν‚€μ›Œλ“œλ‘œ μƒμ„±ν•˜λŠ” 방법도 μžˆλ‹€ 이 방법을 'object constructor' 이라고 ν•œλ‹€. ​ μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” ν΄λž˜μŠ€κ°€ 없어도 κ΄„ν˜Έ {} λ₯Ό μ‚¬μš©ν•˜μ—¬ 였브젝트λ₯Ό 생성할 수 μžˆλ‹€. ​ ​ 자..