JavaScript์์ ๋ณ์๋ฅผ ์ ์ธํ ๋๋ var
, let
, const
์ธ ๊ฐ์ง ํค์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ์ค const
๋ ์์(constant)๋ฅผ ์ ์ธํ๋ ํค์๋๋ก, ์ ์ธ๋ ๋ณ์์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค. ํ์ง๋ง, ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ๊ฐ์ ์ฐธ์กฐ ์๋ฃํ์ const
๋ก ์ ์ธํ ๋๋ ์กฐ๊ธ ๋ค๋ฅธ ๊ฐ๋
์ด ์ ์ฉ๋ฉ๋๋ค. ์ด ๊ธ์์๋ const
๋ก ์ ์ธ๋ ๋ฐฐ์ด์ ๋์ ์๋ฆฌ์ ์ด๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
const
๋ก ์ ์ธํ ๋ฐฐ์ด: ๋ฌด์์ด ๊ณ ์ ๋๋๊ฐ?
const
ํค์๋๋ก ๋ฐฐ์ด์ ์ ์ธํ๋ฉด, ๋ฐฐ์ด์ ์ฐธ์กฐ๊ฐ ๊ณ ์ ๋ฉ๋๋ค. ์ฆ, ๋ฐฐ์ด ์์ฒด์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๊ณ ์ ๋์ด ๋ค๋ฅธ ๋ฐฐ์ด๋ก ์ฌํ ๋นํ ์ ์์ง๋ง, ๋ฐฐ์ด์ ์์๋ ์์ ๋กญ๊ฒ ์ถ๊ฐ, ์ญ์ , ์์ ํ ์ ์์ต๋๋ค.
๋ฐฐ์ด์ ์ฐธ์กฐ๋ ๊ณ ์ ๋์ง๋ง, ์์๋ ๋ณ๊ฒฝ ๊ฐ๋ฅ
const fruits = ['apple', 'banana', 'cherry'];
// ๋ฐฐ์ด ์์ ์์
fruits[1] = 'orange';
console.log(fruits); // ๊ฒฐ๊ณผ: ['apple', 'orange', 'cherry']
// ๋ฐฐ์ด์ ์์ ์ถ๊ฐ
fruits.push('grape');
console.log(fruits); // ๊ฒฐ๊ณผ: ['apple', 'orange', 'cherry', 'grape']
// ๋ฐฐ์ด์ ์ฌํ ๋นํ๋ ค๊ณ ํ๋ฉด ์ค๋ฅ ๋ฐ์
fruits = ['melon', 'peach']; // ์ค๋ฅ: Assignment to constant variable.
์ ์์ ์์ ๋ณผ ์ ์๋ฏ์ด, const
๋ก ์ ์ธํ ๋ฐฐ์ด์ ๋ฐฐ์ด ์์ฒด์ ์ฐธ์กฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋ฐฐ์ด๋ก ์ฌํ ๋นํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ฐฐ์ด์ ์์๋ฅผ ์์ ํ๊ฑฐ๋ ์ถ๊ฐํ๋ ๊ฒ์ ๊ฐ๋ฅํฉ๋๋ค.
๋ฐฐ์ด ์กฐ์ ๋ฉ์๋์ const
JavaScript์ ๋ฐฐ์ด์๋ push()
, pop()
, splice()
์ ๊ฐ์ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฐ์ด ์กฐ์ ๋ฉ์๋๊ฐ ์์ต๋๋ค. const
๋ก ์ ์ธ๋ ๋ฐฐ์ด๋ ์ด๋ฌํ ๋ฉ์๋๋ฅผ ํตํด ๋ฐฐ์ด์ ๋ด์ฉ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํ์ฉํ๋ฉด const
๋ก ์ ์ธํ ๋ฐฐ์ด์ ์ ์ฐํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
push()
: ๋ฐฐ์ด์ ์์ ์ถ๊ฐ
const numbers = [1, 2, 3];
numbers.push(4); // ๋ฐฐ์ด์ ์์ ์ถ๊ฐ
console.log(numbers); // ๊ฒฐ๊ณผ: [1, 2, 3, 4]
push()
๋ฉ์๋๋ ๋ฐฐ์ด์ ๋ง์ง๋ง์ ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํฉ๋๋ค. const
๋ก ์ ์ธ๋ ๋ฐฐ์ด๋ ์ด ๋ฉ์๋๋ฅผ ํตํด ์์๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
pop()
: ๋ฐฐ์ด์ ๋ง์ง๋ง ์์ ์ ๊ฑฐ
const numbers = [1, 2, 3, 4];
numbers.pop(); // ๋ง์ง๋ง ์์ ์ ๊ฑฐ
console.log(numbers); // ๊ฒฐ๊ณผ: [1, 2, 3]
pop()
๋ฉ์๋๋ ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ์ด ์ญ์ const
๋ฐฐ์ด์์ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
splice()
: ํน์ ์์น์ ์๋ ์์ ์ถ๊ฐ ๋ฐ ์ ๊ฑฐ
const numbers = [1, 2, 3, 4];
// ์ธ๋ฑ์ค 1์์ 2๊ฐ์ ์์ ์ ๊ฑฐ
numbers.splice(1, 2);
console.log(numbers); // ๊ฒฐ๊ณผ: [1, 4]
// ์ธ๋ฑ์ค 1์ 5์ 6 ์ถ๊ฐ
numbers.splice(1, 0, 5, 6);
console.log(numbers); // ๊ฒฐ๊ณผ: [1, 5, 6, 4]
splice()
๋ฉ์๋๋ ๋ฐฐ์ด์ ํน์ ์์น์ ์๋ ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์๋ ๊ฐ๋ ฅํ ๋ฉ์๋์
๋๋ค. const
๋ฐฐ์ด์์๋ ์ด๋ฅผ ์ฌ์ฉํด ๋ฐฐ์ด์ ์์๋ฅผ ์กฐ์ํ ์ ์์ต๋๋ค.
const
๋ก ์ ์ธ๋ ๋ฐฐ์ด์ ๋ถ๋ณ์ฑ ๊ฐ๋
JavaScript์์ const
๋ก ์ ์ธ๋ ๋ฐฐ์ด์ ๋ถ๋ณํ์ง ์์ต๋๋ค. ๋ฐฐ์ด์ ์ฐธ์กฐ๋ ๊ณ ์ ๋์ง๋ง, ๋ฐฐ์ด ๋ด๋ถ์ ๊ฐ์ ์์ ๋กญ๊ฒ ๋ณ๊ฒฝ๋ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด์ ๊ฐ์ ์ฐธ์กฐ ํ์
์ ๊ฐ๋ณ์ฑ์ const
์ ํน์ฑ ์ค ํ๋์
๋๋ค.
์ฐธ์กฐ ํ์ ์ ๊ฐ๋ณ์ฑ
๋ฐฐ์ด๊ณผ ๊ฐ์ฒด์ ๊ฐ์ ์ฐธ์กฐ ํ์
๋ฐ์ดํฐ๋ const
๋ก ์ ์ธํด๋ ๋ด๋ถ ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์ด๋ ์ฐธ์กฐ ์์ฒด๋ ๋ณ๊ฒฝํ ์ ์์ง๋ง, ๋ด๋ถ ๋ฐ์ดํฐ๋ ์กฐ์ํ ์ ์๋ค๋ ์๋ฏธ์
๋๋ค. ํ์ง๋ง ์ด๋ฌํ ๊ฐ๋ณ์ฑ์ ๋๋ก๋ ์๋ํ์ง ์์ ๋์์ ์ด๋ํ ์ ์์ผ๋ฏ๋ก ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
const user = {
name: 'John',
age: 25
};
// ๊ฐ์ฒด ์์ฑ ๋ณ๊ฒฝ ๊ฐ๋ฅ
user.age = 26;
console.log(user); // ๊ฒฐ๊ณผ: { name: 'John', age: 26 }
// ๊ฐ์ฒด ์์ฒด๋ฅผ ์ฌํ ๋นํ๋ ค๊ณ ํ๋ฉด ์ค๋ฅ ๋ฐ์
user = { name: 'Jane', age: 30 }; // ์ค๋ฅ: Assignment to constant variable.
์ ์์ ์์๋ ๊ฐ์ฒด์ ์์ฑ์ ๋ณ๊ฒฝํ ์ ์์ง๋ง, ๊ฐ์ฒด ์์ฒด๋ฅผ ์ฌํ ๋นํ ์ ์์์ ํ์ธํ ์ ์์ต๋๋ค. ๋ฐฐ์ด๋ ์ด์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค.
๋ฐฐ์ด์ ๋ถ๋ณ์ฑ ์ ์ง: const
์ Object.freeze()
๋ฐฐ์ด์ ์ง์ ํ ๋ถ๋ณ ๊ฐ์ฒด๋ก ๋ง๋ค๊ณ ์ถ๋ค๋ฉด Object.freeze()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ๋ฉ์๋๋ ๋ฐฐ์ด์ ์์๋ฅผ ํฌํจํ์ฌ ์์ ํ ๋ณ๊ฒฝํ ์ ์๋ ์ํ๋ก ๋ง๋ญ๋๋ค.
const numbers = [1, 2, 3];
Object.freeze(numbers);
// ๋ฐฐ์ด ์์๋ฅผ ๋ณ๊ฒฝํ๋ ค๊ณ ํ๋ฉด ๋ฌด์๋จ
numbers[0] = 100;
console.log(numbers); // ๊ฒฐ๊ณผ: [1, 2, 3]
// ๋ฐฐ์ด ์์ฒด๋ฅผ ์ฌํ ๋นํ๋ ค๊ณ ํ๋ฉด ์ฌ์ ํ ์ค๋ฅ ๋ฐ์
numbers = [4, 5, 6]; // ์ค๋ฅ: Assignment to constant variable.
Object.freeze()
๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฐ์ด์ ์์๋ ๋ ์ด์ ๋ณ๊ฒฝํ ์ ์์ผ๋ฏ๋ก, ์ง์ ํ ๋ถ๋ณ์ฑ์ ์ ์งํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ด๋ถ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์๊ธฐ๋ฅผ ์ํ ๋๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ธ์ const
๋ก ๋ฐฐ์ด์ ์ ์ธํด์ผ ํ ๊น?
const
๋ก ๋ฐฐ์ด์ ์ ์ธํ๋ ๊ฒ์ ์ฝ๋์ ์๋๋ฅผ ๋ช
ํํ ํ ์ ์๋ ์ข์ ๋ฐฉ๋ฒ์
๋๋ค. ๋ฐฐ์ด ์์ฒด๊ฐ ์ฌํ ๋น๋์ง ์์์ ๋ณด์ฅํ๋ฏ๋ก, ๋ค๋ฅธ ๊ณณ์์ ์๋์น ์๊ฒ ๋ฐฐ์ด์ด ๋ณ๊ฒฝ๋์ง ์๋๋ก ๋ง์ ์ ์์ต๋๋ค. ํนํ ๋ฐฐ์ด์ ์ฐธ์กฐ๋ฅผ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ ๋๋ let
๋์ const
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํฉ๋๋ค.
๊ฒฐ๋ก
JavaScript์์ const
๋ก ์ ์ธํ ๋ฐฐ์ด์ ์ฐธ์กฐ ์์ฒด๊ฐ ๊ณ ์ ๋์ง๋ง, ๋ด๋ถ ์์๋ ์์ ๋กญ๊ฒ ์์ ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฐฐ์ด์ ๋ถํ์ํ ์ฌํ ๋น์ ๋ฐฉ์งํ๋ฉด์๋ ์์๋ฅผ ์ ์ฐํ๊ฒ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ง์ ํ ๋ถ๋ณ์ฑ์ ์ ์งํ๊ณ ์ ํ๋ค๋ฉด Object.freeze()
๋ฅผ ์ฌ์ฉํด ์์ ์์ ๋ ๋ง์ ์ ์์ต๋๋ค. ํ๋ก์ ํธ์์ const
์ ๋ฐฐ์ด์ ๊ฐ๋ณ์ฑ์ ์ ์ดํดํ๊ณ ์ ์ ํ๊ฒ ํ์ฉํด ์์ ์ ์ด๊ณ ์ฝ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํด๋ณด์ธ์!
๋๊ธ ์ฐ๊ธฐ