Responsive Advertisement

JavaScript์—์„œ const๋กœ ์„ ์–ธํ•œ ๋ฐฐ์—ด: ๋ถˆ๋ณ€์„ฑ์„ ์ดํ•ดํ•˜๊ณ  ํ™œ์šฉํ•˜๊ธฐ

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์™€ ๋ฐฐ์—ด์˜ ๊ฐ€๋ณ€์„ฑ์„ ์ž˜ ์ดํ•ดํ•˜๊ณ  ์ ์ ˆํ•˜๊ฒŒ ํ™œ์šฉํ•ด ์•ˆ์ •์ ์ด๊ณ  ์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด์„ธ์š”!

๋Œ“๊ธ€ ์“ฐ๊ธฐ