728x90
๋ฐ์ํ
๐งก JavaScript
1. var, let, const๋?
JavaScript์์ ๋ณ์๋ฅผ ์ ์ธํ๋ ๋ฐฉ๋ฒ์๋ var, let, const ์ธ ๊ฐ์ง๊ฐ ์๋ค.
๊ฐ๊ฐ์ ํน์ง๊ณผ ๋์ ๋ฐฉ์์ด ๋ค๋ฅด๋ฏ๋ก ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํ๋ค.
2. var์ ํน์ง
var๋ ES6 ์ด์ ๋ถํฐ ์กด์ฌํ๋ ๋ณ์ ์ ์ธ ๋ฐฉ์์ด๋ค.
์ฃผ์ ํน์ง
- ํจ์ ๋ ๋ฒจ ์ค์ฝํ(Function Scope): var๋ก ์ ์ธ๋ ๋ณ์๋ ํจ์ ๋ด๋ถ์์๋ง ์ ํจํ๋ค.
- ๋ณ์ ํธ์ด์คํ (Variable Hoisting): ๋ณ์ ์ ์ธ์ด ์ฝ๋ ์คํ ์ ์ ๋์ด์ฌ๋ ค์ง์ง๋ง, ๊ฐ์ ํ ๋น๋์ง ์์ (undefined ์ํ).
- ์ค๋ณต ์ ์ธ ๊ฐ๋ฅ: ๊ฐ์ ์ด๋ฆ์ผ๋ก ์ฌ๋ฌ ๋ฒ ์ ์ธํด๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์.
์์
console.log(a); // undefined ๋ฐ์
var a = 10;
console.log(a); // 10
if (true) {
var b = 20;
}
console.log(b); // 20 (๋ธ๋ก์ ๋ฒ์ด๋๋ ์ ๊ทผ ๊ฐ๋ฅ)
์ ์ฝ๋์์ var ๋ณ์๋ ๋ธ๋ก ์ค์ฝํ๊ฐ ์๋ ํจ์ ์ค์ฝํ๋ฅผ ๊ฐ์ง๋ฏ๋ก if๋ฌธ ๋ฐ์์๋ b๋ฅผ ์ ๊ทผํ ์ ์๋ค.
3. let์ ํน์ง
let์ ES6์์ ๋์ ๋ ๋ณ์ ์ ์ธ ๋ฐฉ์์ผ๋ก, var์ ๋จ์ ์ ๋ณด์ํ๋ค.
์ฃผ์ ํน์ง
- ๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ(Block Scope): {} ๋ธ๋ก ๋ด๋ถ์์๋ง ์ ํจํ๋ค.
- ๋ณ์ ํธ์ด์คํ ๋ฐ์: ํ์ง๋ง TDZ(Temporal Dead Zone)์ ์ํด ์ด๊ธฐํ ์ ์ ๊ทผ ๋ถ๊ฐ.
- ์ค๋ณต ์ ์ธ ๋ถ๊ฐ๋ฅ: ๊ฐ์ ์ค์ฝํ ๋ด์์ ๊ฐ์ ๋ณ์ ์ด๋ฆ์ผ๋ก ๋ค์ ์ ์ธํ๋ฉด ์๋ฌ ๋ฐ์.
์์
let x = 10;
console.log(x); // 10
if (true) {
let y = 20;
console.log(y); // 20
}
// console.log(y); : ์๋ฌ๋ฐ์
4. const์ ํน์ง
const๋ let๊ณผ ๋๋ถ๋ถ ์ ์ฌํ์ง๋ง, ๊ฐ์ ์ฌํ ๋นํ ์ ์๋ค๋ ์ฐจ์ด์ ์ด ์๋ค.
์ฃผ์ ํน์ง
- ๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ(Block Scope): {} ๋ธ๋ก ๋ด๋ถ์์๋ง ์ ํจํ๋ค.
- ๋ณ์ ํธ์ด์คํ ๋ฐ์: ํ์ง๋ง TDZ์ ์ํด ์ด๊ธฐํ ์ ์ ๊ทผ ๋ถ๊ฐ.
- ์์(constant) ์ ์ธ: ์ ์ธ ํ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์.
- ๊ฐ์ฒด์ ๋ฐฐ์ด์ ๋ณ๊ฒฝ ๊ฐ๋ฅ: ๋จ, ๊ฐ์ฒด์ ์์ฑ์ด๋ ๋ฐฐ์ด ์์ ๋ณ๊ฒฝ์ ๊ฐ๋ฅํ๋ค.
์์
const PI = 3.14;
// PI = 3.1415;
const arr = [1, 2, 3];
arr.push(4);
console.log(arr); // [1, 2, 3, 4] (๋ฐฐ์ด ์์ ์ถ๊ฐ ๊ฐ๋ฅ)
const obj = { name: 'Alice' };
obj.age = 25;
console.log(obj); // { name: 'Alice', age: 25 } (๊ฐ์ฒด ์์ฑ ์ถ๊ฐ ๊ฐ๋ฅ)
5. ์ด๋ค ๊ฒฝ์ฐ์ ์ฌ์ฉํด์ผ ํ ๊น?
- ๋ณํ์ง ์๋ ๊ฐ์ const๋ฅผ ์ฌ์ฉํ์ (์: ์์ ๊ฐ, ๊ฐ์ฒด ์ฐธ์กฐ ๊ณ ์ ๋ฑ).
- ๊ฐ์ด ๋ณํ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ฐ let์ ์ฌ์ฉํ์.
- var๋ ์ฌ์ฉ์ ์ง์ํ์. let๊ณผ const๊ฐ ์ ๊ณตํ๋ ๋ธ๋ก ์ค์ฝํ์ TDZ๋ก ์ธํด ์ฝ๋์ ์์ ์ฑ์ด ๋์์ง๋ค
728x90
๋ฐ์ํ
'๐งก JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ๋ณ์(Variable) (1) | 2025.03.18 |
---|---|
[JS] ํํ์๊ณผ ๋ฌธ (0) | 2025.02.19 |
[JS] ๋ฐ์ดํฐํ์ (Data Type) (0) | 2025.02.14 |
[JS] Math.floor()๋? (0) | 2025.02.10 |
[JS] null๊ณผ undefined์ ์ฐจ์ด (0) | 2024.12.27 |