-
[JavaScript] 변수(Variables) & 상수(Constants)Web/JavaScript 2023. 5. 26. 01:01
- 변수(Variables) & 상수(Constants)
- 변수 선언 및 정의 방법
- 변수(Variables) & 상수(Constants)
단어를 직역하자면, 변수는 변하는 숫자를 의미하고 상수는 항상 같은 숫자를 의미한다.
이를 해석하자면,
변수는 기존에 존재하던 변수에 새로운 값이 할당 가능하단 의미이고
상수는 기존에 생성된 상수의 값을 변경할 수 없다는 의미이다. 만약 바꾸려고 하면 오류가 발생한다.
먼저, 변수를 사용하는 예제를 한번 보자.
// 변수는 일종의 데이터 컨테이너 또는 저장소라고 할 수 있다. // 변수에는 주로 let을 사용한다. // userName이라는 변수 이름에 Max라는 값 할당 let userName = 'Max'; // 기존에 있던 변수에 새로운 값 할당 // let은 새로운 값을 할당할 때 키워드를 다시 사용할 필요 없음 // userName이라는 변수 이름에 Max가 아닌 Manu라는 값 할당 userName = 'Manu';
다음은 상수를 사용하는 예제를 한번 보자.
// 상수도 일종의 데이터 컨테이너이다. // 변수와 다른 점은 let이 아닌 const를 사용한다는 것이다. // totalUsers이라는 상수에 값 15를 할당 const totalUsers = 15; // const를 사용해 생성한 상수는 값을 변경할 수 없다. // 변경하려고 하면 오류가 발생하고, 값이 절대 바뀌면 안된다. totalUsers = 20; // 오류 발생
상수는 값을 변경할 수 없고 용도가 제한적이기 때문에 최대한 자주 사용하는 것이 좋다.
만약 그 값을 사용하는 프로그램 전체 혹은 일부 코드의 수명 주기 전반에 걸쳐 절대 변하지 않는 값이 있다면 이를 명확히 함으로써 다른 개발자가 코드를 보았을 때도 쉽게 이해할 수 있을 것이다.
- 변수 선언 및 정의 방법
변수 선언 및 정의 방법은
1. 허용되는 방법 (Allowed)
2. 허용되지 않는 방법 (Not Allowed), 추천하지 않는 방법 (Not Recommended)
으로 나누어 알아보도록 하겠다.
1. 허용되는 방법 (Allowed)
// Allowed // camelCase, 이름이 소문자로 시작하고 한 단어로만 이루어짐. // 단어 내에 공란이 없고, 뒤의 단어는 가독성을 위해 대문자를 사용한 모습 // JavaScript는 대소문자를 구분하기 때문에 대소문자 처리 여부가 중요하다. let userName; // 첫번째 예시와 비슷하지만 숫자 포함, 변수 이름에는 어떤 글자나 숫자도 사용 가능하다. let ageGroup5; // 특수문자도 사용 가능하다. let $kindOfSpecial; // _도 사용 가능하다. let _internalValue;
2. 허용되지 않는 방법 (Not Allowed), 추천하지 않는 방법 (Not Recommended)
// Not Allowed, Not Recommended // Not Recommended // 허용은 되지만 camelCase 표기법을 따르면 좋다. let user_name; // Not Allowed // 변수 이름이 숫자로 시작해서는 안된다. let 21Players; // Not Allowed // 변수 이름의 맨 앞 또는 어느 위치던 $와 _는 사용 가능하지만 그 외에는 사용이 불가능하다. let user-b; // Not Allowed // 키워드들을 변수 이름으로 사용하는 것은 불가능하다. let let;
추가로, JavaScript에서는 변수에 값을 할당하여 꼭 초기화 할 필요가 없다.
예를 들어,
let currentResult;
이 상태가 이미 변수가 선언이 된 상태이다.
대신, 초기화 또는 정의는 되지 않은 상태이다. 설정한 값을 가지고 있지는 않다는 의미이다.
참고 강의: https://www.udemy.com/course/javascript-zw/
'Web > JavaScript' 카테고리의 다른 글
[JavaScript] 증감 연산자(++, --), 전위 연산자, 후위 연산자 (1) 2024.10.22 [JavaScript] <script> 태그의 async, defer 속성 (0) 2024.10.21 [JavaScript] ECMAScript & JavaScript (0) 2023.05.24 [JavaScript] JavaScript란 무엇일까? (0) 2023.05.24 [JavaScript] ES6의 구조 분해 문법(Destructuring) (0) 2023.01.11