01. λ³€μˆ˜

양희쀀·2021λ…„ 8μ›” 31일
1

JavaScript Info

λͺ©λ‘ 보기
1/19
post-thumbnail

πŸ“Œ 1-1 λ³€μˆ˜μ˜ μ •μ˜

λ³€μˆ˜λž€ 사전적 의미둜 λ°”λ€” 수 μžˆλŠ” κ°’μœΌλ‘œ λ©”λͺ¨λ¦¬ 곡간에 μ €μž₯ν•˜λŠ” ν•˜λ‚˜μ˜ 값이닀.

πŸ’‘ ν•˜λ‚˜μ˜ 값이라고 ν‘œν˜„ ν•˜μ˜€μ§€λ§Œ λ³€μˆ˜μ— μ—¬λŸ¬κ°œμ˜ 값을 μ €μž₯ν•˜λŠ” 방법은 크게 2κ°€μ§€λ‘œ κ°μ²΄λ‚˜ 배열을 μ‚¬μš©ν•˜μ—¬ κ·Έλ£Ήν™”ν•˜μ—¬ ν•˜λ‚˜μ˜ κ°’μ²˜λŸΌ μ‚¬μš©ν•  수 μžˆλ‹€. λ°°μ—΄μ•ˆμ— 객체을 λ„£μ–΄μ„œ 객체 배열도 κ°€λŠ₯ν•˜λ‹€.

πŸ“Œ 1-2 λ³€μˆ˜μ˜ μ„ μ–Έ

JSμ—μ„œμ˜ λ³€μˆ˜μ˜ μ„ μ–Έ 방법은 크게 3가지이닀. ES6이전에 μ‚¬μš©ν•˜μ˜€λ˜ varλ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ ES6μ΄ν›„λ‘œλŠ” const와 let이 μΆ”κ°€ λ˜μ—ˆλ‹€.

πŸ’‘ var ν‚€μ›Œλ“œμ˜ λ¬Έμ œμ μ€ 크게 2κ°€μ§€λ‘œ λ‚˜λ‰œλ‹€. ν˜Έμ΄μŠ€νŒ…(Hositing)κ³Ό ν•¨μˆ˜μŠ€μ½”ν”„(Function Scope)λΌλŠ” 사싀이닀.

πŸ“Œ 1-3 ν˜Έμ΄μŠ€νŒ…(Hositing)μ΄λž€?

사전적 μ˜λ―Έλ‘œλŠ” λŒμ–΄μ˜¬λ¦¬λ‹€. λΌλŠ” 뜻으둜 λ³€μˆ˜κ°€ μ•„λž˜μ— 선언이 λ˜μ–΄μžˆμ–΄λ„ μ΅œμƒλ‹¨μœΌλ‘œ λŒμ–΄ μ˜¬λ €μ§„ κ²ƒμ²˜λŸΌ μž‘λ™ν•˜λŠ” 것을 ν˜Έμ΄μŠ€νŒ…(Hositing)이라고 ν•œλ‹€.

var name = "YHJ"; // λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜κ³  값을 할당함
console.log(name); // YHJ좜λ ₯
// ν˜Έμ΄μŠ€νŒ…(Hositing)
console.log(name); // undefined 좜λ ₯
var name = "YHJ"; // λ³€μˆ˜λ₯Ό μ•„λž˜μ—μ„œ μ„ μ–Έ

πŸ’‘ μƒκ°μ—μ„œλŠ” μ—λŸ¬κ°€ 좜λ ₯λ˜μ–΄μ•Ό ν•˜μ§€λ§Œ μ—λŸ¬κ°€ 좜λ ₯λ˜μ§€ μ•Šκ³  undefinedκ°€ 좜λ ₯λœλ‹€.
πŸ’‘ μžλ°”μŠ€ν¬λ¦½νŠΈ μ‹€ν–‰μ»¨ν…μŠ€νŠΈμ—μ„œλŠ” λ™κΈ°μ μœΌλ‘œ μ‹€ν–‰λ˜λŠ” 것은 μˆœμ„œλŒ€λ‘œ Stackμ΄λΌλŠ” 곡간에 μ €μž₯ λΉ„λ™κΈ°μ μœΌλ‘œ μ‹€ν–‰λ˜λŠ” 것은 Queue에 μ €μž₯λ˜μ–΄ Stack이 μ™„λ£Œλ˜μ–΄μ•Ό Queueκ°€ ν˜ΈμΆœλœλ‹€. λ‚˜μ€‘μ— μžμ„Ένžˆ 올렀볼 μ˜ˆμ •μ΄λ‹€. μ΄λŸ¬ν•œ 이유둜 μœ„μ—μ„œ λΆ€ν„° μ•„λž˜λ‘œ μœ„μ— μžˆλŠ” μ½”λ“œκ°€ μ‹€ν–‰λœλ‹€. λ³€μˆ˜λŠ” Heapμ΄λΌλŠ” 곡간에 μ €μž₯λœλ‹€.
πŸ’‘ 이처럼 λ³€μˆ˜μ„ μ–Έμ΄ λŸ°νƒ€μž„ 이전에 λ¨Όμ € μ‹€ν–‰λœκ²ƒμœΌλ‘œ 이것이 ν˜Έμ΄μŠ€νŒ…(Hositing)이라고 ν•œλ‹€.
πŸ’‘ 사싀 letκ³Ό const도 λ˜‘κ°™μ΄ ν˜Έμ΄μŠ€νŒ…μ΄ λ°œμƒν•˜μ§€λ§Œ μ—λŸ¬κ°€ 좜λ ₯λœλ‹€ 그것은 λ‚˜μ€‘μ— μžμ„Ένžˆ 올렀볼 μ˜ˆμ •μ΄λ‹€.

πŸ“Œ 1-4 λ³€μˆ˜μ˜ μž¬ν• λ‹Ή

λ³€μˆ˜μ˜ μž¬ν• λ‹Ήμ΄λΌλŠ” 것은 일단 크게 2κ°€μ§€λŠ” μ•Œμ•„μ•Όν•œλ‹€. μƒμˆ˜μ™€ λ³€μˆ˜μ˜ κ°œλ…μ΄λ‹€. μƒμˆ˜(Constant)λž€ λΆˆλ³€μ˜ 값을 μ΄μ•ΌκΈ°ν•œλ‹€. λ³€μˆ˜(Variable) 계속 λ³€ν•˜λŠ” 값이닀. JSμ—μ„œ μƒμˆ˜λŠ” constλ₯Ό μ‚¬μš©ν•˜κ³  λ³€μˆ˜λŠ” letκ³Ό varλ₯Ό μ‚¬μš©ν•œλ‹€.

var name = "YHJ"; // λ³€μˆ˜ μ„ μ–Έκ³Ό ν• λ‹Ή (let도 κ°€λŠ₯)
console.log(name); // YHJ좜λ ₯
name = "KKK"; // λ³€μˆ˜μ˜ μž¬ν• λ‹Ή
console.log(name); // KKK좜λ ₯
const name = "YHJ"; // μƒμˆ˜ μ„ μ–Έκ³Ό ν• λ‹Ή
console.log(name);  // YHJ좜λ ₯
name = "KKK"; // μƒμˆ˜μ˜ μž¬ν• λ‹Ή
console.log(name); // 였λ₯˜μΆœλ ₯

βœ” μ—λŸ¬λ©”μ„Έμ§€κ°€ 좜λ ₯λœλ‹€.

πŸ“Œ 1-5 λ³€μˆ˜μ˜ 생λͺ…μ£ΌκΈ°(?)

생λͺ…주기라고 ν‘œν˜„μ„ ν•΄μ•Όν•˜λŠ”μ§€λŠ” λͺ¨λ₯΄κ² μ§€λ§Œ λ³€μˆ˜λŠ” 이와 같은 λ‹¨κ³„λ‘œ μ§„ν–‰λœλ‹€.

πŸ’‘ κ°’μ˜ μ„ μ–Έ -> κ°’μ˜ μ΄ˆκΈ°ν™” -> κ°’μ˜ ν• λ‹Ή(μƒμˆ˜λŠ” μ—¬κΈ°μ„œ μ’…λ£Œ) -> κ°’μ˜ μž¬ν• λ‹Ή

var name = "YHJ"; // κ°’μ˜ μ„ μ–Έκ³Ό ν• λ‹Ή
console.log(name); // YHJ좜λ ₯
name = "KKK"; // κ°’μ˜ μž¬ν• λ‹Ή
console.log(name); // KKK좜λ ₯

πŸ’‘ μ„ μ–Έκ³Ό μ΄ˆκΈ°ν™”μ™€ μœ„μ—μ„œ ν˜Έμ΄μŠ€νŒ…(Hositing)의 κ²°κ³Όκ°€ 이해가 μ•ˆλ˜μ‹œλŠ” 뢄듀도 μœ„ν•΄ λ‹¨κ³„λ³„λ‘œ λ‚˜νƒ€λ‚΄ λ³΄μ•˜λ‹€.

var name; // κ°’μ˜ μ„ μ–Έ (선언이후 λ°”λ‘œ 값이 μ΄ˆκΈ°ν™”λœλ‹€)
console.log(name) // κ°’μ˜ μ΄ˆκΈ°ν™” undefined 좜λ ₯ (1-3의 ν˜Έμ΄μŠ€νŒ… λΆ€λΆ„μ—μ„œλŠ” λ°”λ‘œ 이뢀뢄이 좜λ ₯) 
name = "YHJ" // κ°’μ˜ ν• λ‹Ή
console.log(name) // YHJ좜λ ₯
name = "KKK"; // κ°’μ˜ μž¬ν• λ‹Ή
console.log(name); // KKK좜λ ₯
profile
JS 코린이

1개의 λŒ“κΈ€

comment-user-thumbnail
2021λ…„ 8μ›” 31일

JSμ½”λ¦°μ΄λ‹˜ 쒋은 정보 κ°μ‚¬μš”^^

λ‹΅κΈ€ 달기