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

js

(11)
[JavaScript] HTML에 JS μ—°κ²°ν•˜λŠ” 방법 비ꡐ / async VS defer 차이점 πŸ”½ HTML νŒŒμ‹±μ— λŒ€ν•΄μ„œλŠ” μ•„λž˜ 포슀트λ₯Ό μ°Έκ³ ν•΄μ£Όμ„Έμš” πŸ”½[HTTP] λΈŒλΌμš°μ € λ Œλ”λ§ κ³Όμ •πŸ”— Browser Rendering(λΈŒλΌμš°μ € λ Œλ”λ§)μ΄λž€? μ‚¬μš©μžμ˜ μš”μ²­μ„ μ„œλ²„μ— μ „λ‹¬ν•˜κ³  κ·Έ κ²°κ³Όλ₯Ό 화면에 λ‚˜νƒ€λ‚΄λŠ” 과정을 μ˜λ―Έν•œλ‹€. πŸ”— Parsing(νŒŒμ‹±)μ΄λž€? λΈŒλΌμš°μ €κ°€ μ½”λ“œλ₯Ό μ΄ν•΄ν•˜κ³  μ‚¬μš©ν•  수 μžˆλŠ” devjindev.tistory.com 1. head μ•ˆμ— λΆˆλŸ¬μ˜€λŠ” 경우 β­β˜†β˜†β˜† 123456789 ... ... cs JSλ₯Ό λΆˆλŸ¬μ˜€λŠ” λ™μ•ˆ HTML νŒŒμ‹±μ„ λ©ˆμΆ”κ³ , JS λ‹€ 뢈러였면 λ‚˜λ¨Έμ§€ νŒŒμ‹±μ„ μ§„ν–‰ν•˜κΈ° λ•Œλ¬Έμ— μ‚¬μš©μžμ—κ²Œ νŽ˜μ΄μ§€κ°€ λ³΄μ—¬μ§€λŠ” μ‹œκ°„μ΄ λ”œλ ˆμ΄λœλ‹€. 2. body μ•ˆ(맨 끝)에 λΆˆλŸ¬μ˜€λŠ” 경우 β­β­β˜†β˜† 123456789 ... ... cs λ¨Όμ € HTML을 λͺ¨λ‘ νŒŒμ‹±ν•˜μ—¬ μ‚¬μš©μžμ—κ²Œ νŽ˜μ΄μ§€κ°€ 보여진 ν›„,..
[JavaScript] ν”„λ‘œν† νƒ€μž…(prototype) μ΄λž€ 클래슀(class)λŠ” 객체지ν–₯μ–Έμ–΄μ—μ„œ 빠질 수 μ—†λŠ” κ°œλ…μ΄λ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλ„ 객체지ν–₯언어이닀. ν•˜μ§€λ§Œ μžλ°”μŠ€ν¬λ¦½νŠΈμ—λŠ” ν΄λž˜μŠ€κ°€ μ—†λ‹€. λŒ€μ‹  ν”„λ‘œν† νƒ€μž…μ΄λΌλŠ” 것이 μ‘΄μž¬ν•œλ‹€. 이것이 μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ 'ν”„λ‘œν† νƒ€μž… 기반 μ–Έμ–΄'라고 λΆˆλ¦¬λŠ” μ΄μœ μ΄λ‹€. πŸ”— ν”„λ‘œν† νƒ€μž…(prototype) ν”„λ‘œν† νƒ€μž…μœΌλ‘œ 클래슀 κ΅¬ν˜„μ΄ κ°€λŠ₯ν•˜λ‹€. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” ν”„λ‘œν† νƒ€μž…μ„ 기반으둜 상속을 κ΅¬ν˜„ν•˜μ—¬ 기쑴의 μ½”λ“œλ₯Ό μž¬μ‚¬μš©ν•¨μœΌλ‘œμ¨ λΆˆν•„μš”ν•œ 쀑볡을 μ œκ±°ν•œλ‹€. μƒμ„±μžλ₯Ό μ΄μš©ν•˜μ—¬ 클래슀처럼 μ‚¬μš©ν•  μˆ˜λŠ” μžˆμ§€λ§Œ λŒ€λΆ€λΆ„μ˜ 경우 같은 ν˜ΈμΆœμ„ λ°˜λ³΅ν•œλ‹€λ˜κ°€μ˜ λΆˆν•„μš”ν•œ 행동이 λ°˜λ³΅λ˜μ–΄ 효율적인 μ½”λ“œκ°€ λ˜μ§€ λͺ»ν•œλ‹€. κ·Έλž˜μ„œ ν”„λ‘œν† νƒ€μž…μ΄λΌλŠ” 빈 객체에 미리 값듀을 담아두고 μƒˆλ‘œ μƒμ„±ν•œ κ°μ²΄λŠ” κ·Έ ν”„λ‘œν† νƒ€μž…μ˜ 값을 κ°€μ Έμ˜€λŠ” 방식을 κ°–μΆ°μ„œ 클래슀의 ν™œμš©μ²˜λŸΌ μž¬μ‚¬μš©μ„ ..
[JavaScript] thisλž€? / call, apply, bind 차이점 πŸ”— thisλž€? thisλŠ” ν•¨μˆ˜ 호좜 방식에 따라 this에 바인딩할 객체가 λ™μ μœΌλ‘œ κ²°μ •λœλ‹€. (μ˜ˆμ™Έμ μœΌλ‘œ, bind ν•¨μˆ˜λŠ” 호좜과 λ¬΄κ΄€μ—κ²Œ λ¬Άμ–΄μ„œ κ³ μ •μ‹œν‚¬ 수 μžˆλ‹€.) ν˜ΈμΆœν•œ 객체 === this πŸ”— ν•¨μˆ˜ 호좜 방식 1. ν•¨μˆ˜(μΌλ°˜ν•¨μˆ˜, μ „μ—­ν•¨μˆ˜, μ™ΈλΆ€ν•¨μˆ˜, λ‚΄λΆ€ν•¨μˆ˜(일반 λ‚΄λΆ€ν•¨μˆ˜, λ©”μ†Œλ“œμ˜ λ‚΄λΆ€ν•¨μˆ˜, μ½œλ°±ν•¨μˆ˜ λ“±)) 호좜 thisλŠ” 전역객체(window)λ₯Ό 가리킨닀. 2. λ©”μ†Œλ“œ 호좜 thisλŠ” ν•΄λ‹Ή λ©”μ†Œλ“œμ˜ 객체λ₯Ό 가리킨닀. 3. μƒμ„±μž ν•¨μˆ˜ 호좜 thisλŠ” μƒμ„±μžλ‘œ 인해 μƒμ„±λœ μΈμŠ€ν„΄μŠ€λ₯Ό 가리킨닀. 4. call, apply, bind 호좜 thisκ°€ ν•¨μˆ˜ ν˜ΈμΆœμ‹μ— 따라 객체λ₯Ό 가리킨닀면 call, apply, bindλŠ” ν•¨μˆ˜κ°€ 직접 μ‹€ν–‰λ¬Έλ§₯을 κ²°μ •ν•œλ‹€. call은 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•΄ μ‹€ν–‰ν•œλ‹€. ν•¨μˆ˜..
[JavaScript] ν˜Έμ΄μŠ€νŒ…(Hoisting) μ΄λž€? πŸ”— ν˜Έμ΄μŠ€νŒ…(Hoisting)μ΄λž€? λ³€μˆ˜ λ˜λŠ” ν•¨μˆ˜ μ„ μ–Έ 뢀뢄이 μ΅œμƒλ‹¨μœΌλ‘œ λŒμ–΄ μ˜¬λ €μ§€λŠ” ν˜„μƒμ„ μ˜λ―Έν•œλ‹€. λ³€μˆ˜κ°€ 있으면 μœ„μΉ˜μ— 상관없이 μ΅œμƒλ‹¨μ—μ„œ undefined된 ν˜•νƒœλ‘œ μ‘΄μž¬ν•œλ‹€. ⭐ 주의 var λ³€μˆ˜ μ„ μ–Έκ³Ό ν•¨μˆ˜ μ„ μ–Έλ¬Έμ—μ„œλ§Œ ν˜Έμ΄μŠ€νŒ…μ΄ μΌμ–΄λ‚œλ‹€. (let/const λ³€μˆ˜ μ„ μ–Έ, ν•¨μˆ˜ ν‘œν˜„μ‹μ—μ„œλŠ” λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€.) 12345console.log(a); // undefined 좜λ ₯console.log(b); // error var a = 'hello';const b = 'hello2';cs 12345678910func1(); // hello 좜λ ₯func2(); // error function func1() { // ν•¨μˆ˜μ„ μ–Έλ¬Έ console.log("hello");} var func2 = functi..
[JavaScript] μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” '이벀트 기반', 'λ…ΌλΈ”λ‘œν‚Ή' 방식을 μ‚¬μš©ν•˜κ³  'μ‹±κΈ€ μŠ€λ ˆλ“œ' 언어이닀. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ‹±κΈ€ μŠ€λ ˆλ“œ 언어이닀. ν•˜μ§€λ§Œ μ‹€μ œ μ‚¬μš©μ‹œμ—λŠ” λ§Žμ€ μž‘μ—…μ΄ λ™μ‹œμ— μ²˜λ¦¬λ˜λŠ” λ©€ν‹° μŠ€λ ˆλ“œμ²˜λŸΌ λ³΄μ΄λŠ”λ° μ™œ 그런 κ²ƒμΌκΉŒ? μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ–΄λ–»κ²Œ 'λ™μ‹œμ„±(Concurrency)'을 μ§€μ›ν•˜λŠ” κ²ƒμΌκΉŒ? λ°”λ‘œ μ—¬κΈ°μ„œ λ“±μž₯ν•˜λŠ” κ°œλ…μ΄ 이벀트 루프이닀. πŸ”— 이벀트 기반(event-driven)μ΄λž€? 이벀트 κΈ°λ°˜μ΄λž€ μ΄λ²€νŠΈκ°€ λ°œμƒν•  λ•Œ 미리 μ§€μ •ν•΄λ‘” μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 방식을 μ˜λ―Έν•œλ‹€. β–ͺ 이벀트 루프 이벀트 λ°œμƒ μ‹œ ν˜ΈμΆœν•  콜백 ν•¨μˆ˜λ“€μ„ κ΄€λ¦¬ν•˜κ³ , 호좜된 콜백 ν•¨μˆ˜μ˜ μ‹€ν–‰ μˆœμ„œλ₯Ό κ²°μ •ν•œλ‹€. λͺ¨λ“  μ΄λ²€νŠΈκ°€ μ’…λ£Œλ  λ•Œ κΉŒμ§€ 이벀트 처리λ₯Ό μœ„ν•œ μž‘μ—…μ„ λ°˜λ³΅ν•˜λ―€λ‘œ 루프라고 λΆˆλ¦°λ‹€. 콜 μŠ€νƒμ—μ„œ μ‹€ν–‰ 쀑인 것이 μžˆλŠ”μ§€ ν™•μΈν•˜κ³ , 콜백 큐에 μž‘μ—…μ΄ μžˆλŠ”μ§€ ν™•μΈν•΄μ„œ 콜 μŠ€νƒμ΄ λΉ„μ—ˆλ‹€λ©΄ 콜백 큐 λ‚΄μ˜ μž‘μ—…μ„ 콜 μŠ€νƒμœΌλ‘œ ..
[JavaScript] λ©”λͺ¨λΌμ΄μ œμ΄μ…˜(Memoization)μ΄λž€? πŸ”— λ©”λͺ¨λΌμ΄μ œμ΄μ…˜(Memoization)μ΄λž€? 컴퓨터 ν”„λ‘œκ·Έλž¨μ΄ λ™μΌν•œ 계산을 λ°˜λ³΅ν•΄μ•Ό ν•  λ•Œ, 이전에 κ³„μ‚°ν•œ 값을 λ©”λͺ¨λ¦¬μ— μ €μž₯ν•˜μ—¬ 그것을 ν™œμš©ν•¨μœΌλ‘œμ¨ 반볡 μˆ˜ν–‰μ„ μ œκ±°ν•œλ‹€. ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 속도가 빨라진닀. πŸ”Ž μ°Έκ³  자료 μžλ°”μŠ€ν¬λ¦½νŠΈ λ©”λͺ¨λΌμ΄μ œμ΄μ…˜ 예제보기 πŸ’‘ 같이 보면 쒋을 Post [JavaScript] μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” '이벀트 기반', 'λ…ΌλΈ”λ‘œν‚Ή' 방식을 μ‚¬μš©ν•˜κ³  'μ‹±κΈ€ μŠ€λ ˆλ“œ' 언어이닀. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ‹±κΈ€ μŠ€λ ˆλ“œ 언어이닀. ν•˜μ§€λ§Œ μ‹€μ œ μ‚¬μš©μ‹œμ—λŠ” λ§Žμ€ μž‘μ—…μ΄ λ™μ‹œμ— μ²˜λ¦¬λ˜λŠ” λ©€ν‹° μŠ€λ ˆλ“œμ²˜λŸΌ λ³΄μ΄λŠ”λ° μ™œ 그런 κ²ƒμΌκΉŒ? μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ–΄λ–»κ²Œ 'λ™μ‹œμ„±(Concurrency)'을 μ§€μ›ν•˜ devjindev.tistory.com
[JavaScript] μžλ£Œν˜• (Data Type) / μ’…λ₯˜, ν˜•λ³€ν™˜, typeof πŸ”— μžλ£Œν˜•(Data Type) μ’…λ₯˜ μˆ«μžν˜• (Number) : 10μ§„μˆ˜, 16μ§„μˆ˜, μ‹€μˆ˜ λͺ¨λ‘ ν•΄λ‹Ή λ¬Έμžν˜• (String) λ…Όλ¦¬ν˜• (Boolean) : true(μ°Έ) / false(κ±°μ§“) undefined : λ―Έμ •μ˜λœ μžλ£Œν˜• null : 아무것도 μ°Έμ‘°ν•˜μ§€ μ•Šμ€ μžλ£Œν˜• πŸ“Œ undefined VS null 차이점 곡톡점 : "값이 μ—†λ‹€." undefined 데이터 νƒ€μž… μ΄ˆκΈ°ν™” λ˜μ§€ μ•Šμ€ κΈ°λ³Έ μ΄ˆκΈ°κ°’ μƒνƒœ ex) var data1; null 였브젝트(객체) νƒ€μž… 객체λ₯Ό λ‹΄κΈ°μœ„ν•œ λ³€μˆ˜λ₯Ό μ΄ˆκΈ°ν™” ν•˜λŠ” μƒνƒœ ex) var data = null; (🀷‍♀️) undefined 보닀 null λŒ€μƒ λ³€μˆ˜κ°€ 더 큰 λ²”μœ„μΈ λŠλ‚Œ πŸ”— μžλ£Œν˜• ν™•μΈν•˜κΈ° typeof(λ³€μˆ˜); πŸ”— μžλ£Œν˜• ν˜•λ³€ν™˜ λ¬Έμžν˜• -> μˆ«μžν˜• Number(λ³€μˆ˜..
[JavaScript] μ—°μ‚°μž(Operator) / μ’…λ₯˜ πŸ”— κΈ°λ³Έ 사칙 μ—°μ‚°μž + , - , * , / , % πŸ”— λ¬Έμžμ—΄ μ—°μ‚°μž + : λ¬Έμžμ—΄ ν•©μΉ˜κΈ° ex) '감' + '자' => '감자' πŸ”— 볡합 λŒ€μž… μ—°μ‚°μž += : κΈ°μ‘΄ λ³€μˆ˜ 값에 값을 λ”ν•˜κΈ° -= : κΈ°μ‘΄ λ³€μˆ˜ 값에 값을 λΉΌκΈ° *= : κΈ°μ‘΄ λ³€μˆ˜ 값에 값을 κ³±ν•˜κΈ° /= : κΈ°μ‘΄ λ³€μˆ˜ 값에 값을 λ‚˜λˆ„κΈ° %= : κΈ°μ‘΄ λ³€μˆ˜ 값에 값을 λ‚˜λˆ„κΈ° ν•œ λ‚˜λ¨Έμ§€ κ΅¬ν•˜κΈ° ex) num = num + 10; => num += 10; πŸ”— 증감 μ—°μ‚°μž ++ : 1μ”© 증가 -- : 1μ”© κ°μ†Œ πŸ”— 쑰건 비ꡐ μ—°μ‚°μž >= : (μ’Œλ³€μ΄ μš°λ³€λ³΄λ‹€) ν¬κ±°λ‚˜ κ°™λ‹€. : (μ’Œλ³€μ΄ μš°λ³€λ³΄λ‹€) 크닀.