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

ALL

(119)
[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] μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ(Execution Context)λž€? πŸ”— μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ(Execution Context) λž€? μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλŠ” μ‹€ν–‰ κ°€λŠ₯ν•œ μ½”λ“œκ°€ μ‹€ν–‰λ˜κΈ° μœ„ν•΄ ν•„μš”ν•œ ν™˜κ²½μ΄λ‹€. πŸ”— μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ˜ μ’…λ₯˜ πŸ“ μ „μ—­ μ»¨ν…μŠ€νŠΈ (Global Context) μ „μ—­ μ˜μ—­μ— μ‘΄μž¬ν•˜λŠ” μ½”λ“œμ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ 생성이 되면, μŠ€νƒμ— μŒ“μΈλ‹€. μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ’…λ£Œλ  λ•Œ(μ›Ή νŽ˜μ΄μ§€μ—μ„œ λ‚˜κ°€κ±°λ‚˜ λΈŒλΌμš°μ €λ₯Ό 닫을 λ•Œ) μ†Œλ©Έλœλ‹€. windowκ°€ this둜 ν• λ‹Ήλœλ‹€. πŸ“ ν•¨μˆ˜ μ»¨ν…μŠ€νŠΈ (Function Context) ν•¨μˆ˜ 내에 μ‘΄μž¬ν•˜λŠ” μ½”λ“œμ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ μ„ μ–Έλœ ν•¨μˆ˜κ°€ 호좜이 될 λ•Œ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ 생성이 되고, μŠ€νƒμ— μŒ“μΈλ‹€. ν•¨μˆ˜μ˜ λͺ¨λ“  λ™μž‘(μ‹€ν–‰)이 μ™„λ£Œλ˜λ©΄, ν•¨μˆ˜ μ»¨ν…μŠ€νŠΈλŠ” μ†Œλ©Έλœλ‹€. (ν΄λ‘œμ € μ‚¬μš©ν•˜λ©΄ μ†Œλ©ΈX) πŸ”— μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ˜ 객체 μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλŠ” μ‹€ν–‰ κ°€..
[JavaScript / ES6] ES6 문법 정리 πŸ”— const, let πŸ“Œ var VS const, let var은 ν•¨μˆ˜ μŠ€μ½”ν”„μ΄λ‹€. const, let은 블둝 μŠ€μ½”ν”„μ΄λ‹€. λ”°λΌμ„œ {블둝} λ°–μ—μ„œ λ³€μˆ˜μ— μ ‘κ·Όν•  수 μ—†λ‹€. πŸ“Œ const VS let let은 λ³€μˆ˜μ— μž¬ν• λ‹Ήμ΄ κ°€λŠ₯ν•˜λ‹€. λ”°λΌμ„œ λ‹€λ₯Έ 값을 λŒ€μž…ν•΄μ•Ό ν•˜λŠ” 상황이 생겼을 λ•Œ μ‚¬μš©ν•œλ‹€. constλŠ” λ³€μˆ˜μ— ν•œ 번 λŒ€μž…ν•˜λ©΄ λ‹€λ₯Έ 값을 λŒ€μž…ν•  수 μ—†λ‹€. 보톡 기본적으둜 μ‚¬μš©ν•œλ‹€. πŸ”— ν…œν”Œλ¦Ώ λ¬Έμžμ—΄ 1 2 3 4 5 6 7 const num1 = 1; const num2 = 2; const result = 3; const string1 = num1 + '+' + num2 + '=' + result; // κΈ°μ‘΄ 방식 const string2 = `${num1}+${num2}=${result}` // E..
[JavaScript / 비동기 처리] AJAX / Callback, Promise, async, await πŸ“Œ 동기(Synchronous) ν”„λ‘œκ·Έλž˜λ° vs 비동기(Asynchronous) ν”„λ‘œκ·Έλž˜λ° 동기 ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ“œκ°€ λ°˜λ“œμ‹œ μž‘μ„±λœ μˆœμ„œλŒ€λ‘œ μ‹€ν–‰λ˜λŠ” 방식이닀. 비동기 ν”„λ‘œκ·Έλž˜λ°μ€ μ½”λ“œμ˜ μ²˜λ¦¬κ°€ μ™„λ£Œλ  λ•ŒκΉŒμ§€ 기닀리지 μ•Šκ³  λ‹€λ₯Έ μ½”λ“œλ₯Ό μ²˜λ¦¬ν•˜λŠ” 방식이닀. πŸ”— 비동기 처리 사둀 > AJAX μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό μ‚¬μš©ν•œ 비동기 톡신이며, ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°„μ˜ XML 데이터λ₯Ό μ£Όκ³ λ°›λŠ” κΈ°μˆ μ΄λ‹€. XMLHttpRequest 객체λ₯Ό μ΄μš©ν•΄μ„œ 전체 νŽ˜μ΄μ§€λ₯Ό λ¦¬λ‘œλ“œν•˜μ§€ μ•Šκ³  ν•„μš”ν•œ λ°μ΄ν„°λ§Œ λ‘œλ“œν•  수 μžˆλ‹€λŠ” μž₯점이 μžˆλ‹€. πŸ”— 비동기 처리 방법 β‘  > 콜백(Callback) ν•¨μˆ˜ ν•¨μˆ˜ μ‹€ν–‰ 결과값을 리턴이 μ•„λ‹Œ λ§€κ°œλ³€μˆ˜λ‘œ λ„˜μ–΄μ˜¨ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ λ„˜κ²¨μ£ΌλŠ” 방식이닀. πŸ”— 콜백 ν•¨μˆ˜ μ‚¬μš©ν•˜λŠ” 이유 νŠΉμ • 둜직이 끝났을 λ•Œ μ›ν•˜λŠ” λ™μž‘..
[JavaScript] μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” '이벀트 기반', 'λ…ΌλΈ”λ‘œν‚Ή' 방식을 μ‚¬μš©ν•˜κ³  'μ‹±κΈ€ μŠ€λ ˆλ“œ' 언어이닀. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ‹±κΈ€ μŠ€λ ˆλ“œ 언어이닀. ν•˜μ§€λ§Œ μ‹€μ œ μ‚¬μš©μ‹œμ—λŠ” λ§Žμ€ μž‘μ—…μ΄ λ™μ‹œμ— μ²˜λ¦¬λ˜λŠ” λ©€ν‹° μŠ€λ ˆλ“œμ²˜λŸΌ λ³΄μ΄λŠ”λ° μ™œ 그런 κ²ƒμΌκΉŒ? μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ–΄λ–»κ²Œ 'λ™μ‹œμ„±(Concurrency)'을 μ§€μ›ν•˜λŠ” κ²ƒμΌκΉŒ? λ°”λ‘œ μ—¬κΈ°μ„œ λ“±μž₯ν•˜λŠ” κ°œλ…μ΄ 이벀트 루프이닀. πŸ”— 이벀트 기반(event-driven)μ΄λž€? 이벀트 κΈ°λ°˜μ΄λž€ μ΄λ²€νŠΈκ°€ λ°œμƒν•  λ•Œ 미리 지정해둔 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 방식을 μ˜λ―Έν•œλ‹€. β–ͺ 이벀트 루프 이벀트 λ°œμƒ μ‹œ ν˜ΈμΆœν•  콜백 ν•¨μˆ˜λ“€μ„ κ΄€λ¦¬ν•˜κ³ , 호좜된 콜백 ν•¨μˆ˜μ˜ μ‹€ν–‰ μˆœμ„œλ₯Ό κ²°μ •ν•œλ‹€. λͺ¨λ“  μ΄λ²€νŠΈκ°€ μ’…λ£Œλ  λ•Œ κΉŒμ§€ 이벀트 처리λ₯Ό μœ„ν•œ μž‘μ—…μ„ λ°˜λ³΅ν•˜λ―€λ‘œ 루프라고 λΆˆλ¦°λ‹€. 콜 μŠ€νƒμ—μ„œ μ‹€ν–‰ 쀑인 것이 μžˆλŠ”μ§€ ν™•μΈν•˜κ³ , 콜백 큐에 μž‘μ—…μ΄ μžˆλŠ”μ§€ ν™•μΈν•΄μ„œ 콜 μŠ€νƒμ΄ λΉ„μ—ˆλ‹€λ©΄ 콜백 큐 λ‚΄μ˜ μž‘μ—…μ„ 콜 μŠ€νƒμœΌλ‘œ ..
[JavaScript] 가비지컬렉터(Garbage Collector)λž€? / μ—­ν• , λ™μž‘ 원리 πŸ”— 가비지컬렉터(Garbage Collector)λž€? μ—¬κΈ°μ„œ κ°€λΉ„μ§€λž€ 'μ •λ¦¬λ˜μ§€ μ•Šμ€ λ©”λͺ¨λ¦¬', 'μœ νš¨ν•˜μ§€ μ•Šμ€ λ©”λͺ¨λ¦¬ μ£Όμ†Œ'λ₯Ό λ§ν•œλ‹€. 가비지 μ»¬λ ‰ν„°λŠ” μ΄λŸ¬ν•œ ν•„μš”μ—†λŠ” 정보듀, 가비지듀을 μ“Έμ–΄ λ‹΄μ•„ λ²„λ¦ΌμœΌλ‘œμ¨ λ©”λͺ¨λ¦¬λ₯Ό 관리해쀀닀. πŸ”— 가비지컬렉터 λ™μž‘ 원리 μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ λ³€μˆ˜λŠ” μ§μ ‘μ μœΌλ‘œ μ°Έμ‘° κ°’(λ¬Έμžμ—΄, 객체, λ°°μ—΄)을 λ‹΄κ³  μžˆμ§€ μ•Šκ³ , ν•΄λ‹Ή 값은 λ©”λͺ¨λ¦¬ 상에 μ €μž₯λœλ‹€. κ·Έλž˜μ„œ μ°Έμ‘° 값을 μƒμ„±ν•˜κ³  λ‚˜μ„œ 더이상 μ°Έμ‘°ν•  것이 μ—†κ±°λ‚˜ λΉ„μ–΄μ‘Œμ„ λ•Œ 가비지 컬렉터가 λ™μž‘ν•˜μ—¬ λ©”λͺ¨λ¦¬κ°€ λ°˜ν™˜λœλ‹€. (λ©”λͺ¨λ¦¬λ₯Ό λ‹€μ‹œ μž¬μ‚¬μš© ν•  수 μžˆλŠ” μƒνƒœκ°€ λœλ‹€.) πŸ”Ž μ°Έκ³  자료 가비지 컬렉터가 λ­ν•˜λŠ” κ±΄κ°€μš”? ν”„λ‘ νŠΈμ—”λ“œ 개발자 λ©΄μ ‘ 질문 정리 πŸ’‘ 같이 보면 쒋을 Post [JavaScript] μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” '이벀트 기반', ..
[JavaScript] λ©”λͺ¨λΌμ΄μ œμ΄μ…˜(Memoization)μ΄λž€? πŸ”— λ©”λͺ¨λΌμ΄μ œμ΄μ…˜(Memoization)μ΄λž€? 컴퓨터 ν”„λ‘œκ·Έλž¨μ΄ λ™μΌν•œ 계산을 λ°˜λ³΅ν•΄μ•Ό ν•  λ•Œ, 이전에 κ³„μ‚°ν•œ 값을 λ©”λͺ¨λ¦¬μ— μ €μž₯ν•˜μ—¬ 그것을 ν™œμš©ν•¨μœΌλ‘œμ¨ 반볡 μˆ˜ν–‰μ„ μ œκ±°ν•œλ‹€. ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 속도가 빨라진닀. πŸ”Ž μ°Έκ³  자료 μžλ°”μŠ€ν¬λ¦½νŠΈ λ©”λͺ¨λΌμ΄μ œμ΄μ…˜ 예제보기 πŸ’‘ 같이 보면 쒋을 Post [JavaScript] μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” '이벀트 기반', 'λ…ΌλΈ”λ‘œν‚Ή' 방식을 μ‚¬μš©ν•˜κ³  'μ‹±κΈ€ μŠ€λ ˆλ“œ' 언어이닀. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ‹±κΈ€ μŠ€λ ˆλ“œ 언어이닀. ν•˜μ§€λ§Œ μ‹€μ œ μ‚¬μš©μ‹œμ—λŠ” λ§Žμ€ μž‘μ—…μ΄ λ™μ‹œμ— μ²˜λ¦¬λ˜λŠ” λ©€ν‹° μŠ€λ ˆλ“œμ²˜λŸΌ λ³΄μ΄λŠ”λ° μ™œ 그런 κ²ƒμΌκΉŒ? μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ–΄λ–»κ²Œ 'λ™μ‹œμ„±(Concurrency)'을 μ§€μ›ν•˜ devjindev.tistory.com
[JavaScript] λ©”μ†Œλ“œ 체이닝(Method Chaining)μ΄λž€? πŸ”— λ©”μ†Œλ“œ 체이닝(Method Chaining)μ΄λž€? μ—¬λŸ¬ λ©”μ†Œλ“œλ₯Ό μ΄μ–΄μ„œ ν˜ΈμΆœν•˜λŠ” 문법이닀. λ©”μ†Œλ“œκ°€ 객체(this)λ₯Ό λ°˜ν™˜ν•˜μ—¬ μ—¬λŸ¬ λ©”μ†Œλ“œλ₯Ό 순차적으둜 μ„ μ–Έν•  수 μžˆλ„λ‘ ν•œλ‹€. πŸ”— μž₯단점 μž₯점 μ½”λ“œκ°€ κ°„κ²°ν•΄μ Έ ν•˜λ‚˜μ˜ λ¬Έμž₯처럼 읽힐 수 μžˆλ‹€. μž₯기적으둜 μœ μ§€λ³΄μˆ˜μ— 도움이 λœλ‹€. 단점 ν•˜λ‚˜μ˜ λΌμΈμ—μ„œ λ„ˆλ¬΄ λ§Žμ€ 일이 μΌμ–΄λ‚˜ 디버깅에 어렀움이 μžˆμ„ 수 μžˆλ‹€. 였λ₯˜κ°€ 났을 λ•Œ μ–΄λŠ λΆ€λΆ„μ˜ λ©”μ†Œλ“œμ—μ„œ 였λ₯˜κ°€ λ‚¬λŠ”μ§€ ν™•μΈν•˜κΈ° μ–΄λ ΅λ‹€. πŸ”Ž μ°Έκ³  자료 λ©”μ†Œλ“œ 체이닝 πŸ’‘ 같이 보면 쒋을 Post [JavaScript] μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” '이벀트 기반', 'λ…ΌλΈ”λ‘œν‚Ή' 방식을 μ‚¬μš©ν•˜κ³  'μ‹±κΈ€ μŠ€λ ˆλ“œ' 언어이닀. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ‹±κΈ€ μŠ€λ ˆλ“œ 언어이닀. ν•˜μ§€λ§Œ μ‹€μ œ μ‚¬μš©μ‹œμ—λŠ” λ§Žμ€ μž‘μ—…μ΄ λ™μ‹œμ— μ²˜λ¦¬λ˜λŠ” λ©€ν‹° μŠ€λ ˆλ“œμ²˜λŸΌ λ³΄μ΄λŠ”λ°..