JavaScript 상수: 불변성의 힘을解锁
안녕하세요, 미래의 JavaScript 마법사 여러분! JavaScript 상수의 마법적인 세계를 여러분과 함께 탐험하게 되어 기쁩니다. 여러분의 친절한 이웃 컴퓨터 과학 교사로서, 수많은 학생들이 이 개념에 어려움을 겪는 것을 목격했지만 두려워 마세요! 이 강의가 끝나면 여러분은 상수의 고수가 될 것입니다. 그러니 키보드를 잡고 함께 빠져들어 보겠습니다!
JavaScript 상수는 무엇인가요?
케이크를 만들고 있다고 상상해 보세요. 오븐에 넣은 후에 갑자기 피자로 바꿀 수는 없죠? JavaScript에서 상수는 이와 비슷하게 작동합니다. 상수는 코드에 대한 약속과 같습니다: "이 값을 변경하지 않을 것을 다짐합니다!"
상수는 한 번 값을 할당한 후 다시 할당할 수 없는 변수입니다. 그들은 마음을 먹고 나서는 변하지 않는 형제 같은 존재입니다. 한 번 결정을 내렸으면 그것을 바꿀 수 없습니다!
JavaScript 상수 선언
JavaScript에서 상수를 선언하려면 const
키워드를 사용합니다. "Hey JavaScript, 이 것은 절대로 변경되지 않을 거야."라고 말하는 것과 같습니다.
다음은 몇 가지 예제입니다:
const PI = 3.14159;
const DAYS_IN_WEEK = 7;
const FAVORITE_COLOR = "purple";
이 예제에서 우리는 수학 상수 pi, 주간의 일 수, 그리고 좋아하는 색상을 위한 상수를 선언했습니다. 한 번 설정되면 이 값들은 고정됩니다.
할당 불가: 상수의 불변성
이제 상수가 진정한 색을 보여줍니다. 상수에 값을 할당한 후에는 변경할 수 없습니다. 고양이에게 목욕을 시키려고 하는 것과 같습니다. 그냥 안 됩니다!
const MY_AGE = 25;
console.log(MY_AGE); // 출력: 25
MY_AGE = 26; // 오류 발생: 상수 변수에 할당할 수 없습니다.
상수에 다시 값을 할당하려고 하면 JavaScript는 (오류 형태의) 성질을 내어 "이제는 변경할 수 없다고 약속했잖아!"라고 합니다.
블록 범위: 상수의 놀이 공간
상수는 "블록 범위"를 가집니다. 블록을 놀이 공원으로 생각해 보세요. 상수는 지정된 놀이 공원 내에서만 놀 수 있습니다.
if (true) {
const BLOCK_SCOPED = "이 블록 내에서만 사용 가능합니다!";
console.log(BLOCK_SCOPED); // 출력: 이 블록 내에서만 사용 가능합니다!
}
console.log(BLOCK_SCOPED); // 오류 발생: BLOCK_SCOPED가 정의되지 않았습니다.
이 예제에서 BLOCK_SCOPED
는 놀이 공원에서 나가지 못하는 아이처럼, if
블록 내에서만 존재하며 외부에서는 접근할 수 없습니다.
JavaScript에서 상수 배열과 객체: 복잡한 전개
이제는 약간 복잡해지는 부분입니다. 배열과 객체를 const
와 함께 사용할 때, 이야기가 더 복잡해집니다! 상수 바인딩은 불변하지만, 배열이나 객체의 내용은 여전히 변경될 수 있습니다. 상수로 만든 애완동물처럼, 그것이 당신의 애완동물이라는 것은 변경할 수 없지만, 새로운 기술을 가르칠 수는 있습니다!
const MY_PETS = ["dog", "cat", "fish"];
console.log(MY_PETS); // 출력: ["dog", "cat", "fish"]
MY_PETS.push("hamster");
console.log(MY_PETS); // 출력: ["dog", "cat", "fish", "hamster"]
MY_PETS = ["parrot"]; // 오류 발생: 상수 변수에 할당할 수 없습니다.
이 예제에서 우리는 MY_PETS
배열에 추가할 수 있지만, 새로운 배열로 다시 할당할 수는 없습니다.
상수 올리기: 내가 놓은 자리에 머물러!
var
과 달리 const
는 올라가지 않습니다. 올리기는 어린이가 방을 청소하겠다고 말하고 나중에 하겠다고 하는 것과 같습니다. 하지만 const
의 경우에는 "나중에"가 없습니다. 상수를 사용하기 전에 선언하고 초기화해야 합니다.
console.log(HOISTED_VAR); // 출력: 정의되지 않음
var HOISTED_VAR = "나는 올라갔어!";
console.log(NOT_HOISTED_CONST); // 오류 발생: NOT_HOISTED_CONST를 초기화하기 전에 접근할 수 없습니다.
const NOT_HOISTED_CONST = "나는 올라가지 않았어!";
var
, let
, const
의 차이
이제 우리의 세 가지 변수 선언 키워드: var
, let
, const
를 비교해 보겠습니다. 그들은 세 가지 형제처럼, 각기 고유한 성격을 가지고 있습니다:
특징 | var | let | const |
---|---|---|---|
범위 | 함수 범위 | 블록 범위 | 블록 범위 |
올리기 | 예 | 아니요 | 아니요 |
재할당 | 예 | 예 | 아니요 |
재선언 | 예 | 아니요 | 아니요 |
var
, let
, const
중 무엇을 사용해야 하나요?
수년간 JavaScript를 가르쳐온 경험을 바탕으로, 제 조언은 다음과 같습니다:
- 기본적으로
const
를 사용하세요. 변수를 안전하고 신뢰할 수 있는 곳에 보관하는 것과 같습니다. - 값이 변경될 것을 알 때
let
를 사용하세요. 반복문의 카운터와 같은 경우입니다. -
var
는 오래된 코드를 다루지 않는 한 사용하지 마세요. 그것은 다이아몬드 핸드폰처럼, 작동은 하지만 더 나은 옵션이 있습니다.
이러한 선택은 다른 개발자들에게(미래의 당신 포함) 당신의 의도를 전달하는 것입니다.
결론적으로, JavaScript의 상수는 예측 가능하고 오류에 강한 코드를 만드는 강력한 도구입니다. 그들은 방에 있는 책임감 있는 성인처럼, 모든 것을 순서 정리합니다. JavaScript 여정을 계속하면서 적절하게 상수를 사용하면 코드가 더 깨끗하고 효율적이며 이해하기 쉬워집니다.
그러므로, 젊은 제자 여러분, const
와 함께 행복하게 살아가세요!
Credits: Image by storyset