자바스크립트

Section 1. 자바스크립트 변수와 상수

포칼이 2023. 3. 21. 19:04

변수란?

데이터를 담는 주머니라 생각하면 된다.

console.log('Hello,', '철수');
// 값들을 주머니에 담아 사용하기
const SALUTATION = 'Hello,';
let person = '철수';

console.log(SALUTATION, person);

person = '영희';

console.log(SALUTATION, person);

SALUTATION 이란 변수에 Hello,라는 문자열을 담았다. 이제부터 SALUTATION 을 호출하면 그 안에 담긴 Hello, 라는 값이 출력될 것이다. 

 

변수에 담긴 데이터는 변경이 될 수 있다.

let x;
console.log(x);

x = 1;
console.log(x);

let으로 x라는 변수를 선언하고 거기에 1이라는 값을 담았다. 

근데 let x 라고 선언만 하고 console.log로 x를 출력하면 무슨 값이 담길까 궁금하다. 

정답은 undefined 라는 값이 담긴다. 즉, '아직 값이 정해지지 않았다' 라는 의미의 값이 담긴 것이다. 

이후에 x라는 변수에 1이라는 값이 담겼다. 

 

변수를 선언과 동시에 값을 담아 줄 수 있다.(초기화)

let x = 1;
console.log(x);

 

다른 변수가 같은 값을 가질때 메모리 영역에서는?

let x = 1;
let y = x; // x가 가진 값을 y에 할당

console.log(x, y);

x에는 1이라는 값이 담겼고 y에는 x에 담긴 값이 담겼다. 

출력을 해보면 둘 다 1을 반환한다. 

이때 변수 x, y는 각각 1이라는 값을 가지고 있는 것이 아니라 서로 같은 1이라는 값을 가리키고 있는 것이다. 

즉, 데이터 영역에서 x, y가 같은 값을 가리키고 있음으로 메모리가 절약됐다. 

 

변수 x에 1을 넣은 뒤 값을 변경하면?

let x = 1;
let y = x;
console.log('변경 전', x, y);

x = 'Hello!';
console.log('변경 후', x, y);

c언어와는 달리 메모리상 가리키는 위치가 변경된다. 즉, 새 값이 할당이 되면 기존 위치에 새 값이 덮어씌워지는 것이 아니라 데이터 영역의 다른(새 값이 있는 위치)곳을 가리키게 되는 것이다. 

 

let으로 선언된 변수는 재할당이 불가능하다. 

let x = 1;
console.log('첫 선언', x);

let x = 2;
console.log('다시 선언', x);

이러면 애러가 발생한다.

 

상수란?

담긴 값이 바뀔 수 없는 주머니를 말한다.

const로 선언하고 흔히 대문자로 선언한다.

또한 선언만 하는 것이 불가능 하다.

다음은 상수에 대한 예시이다.

const PI = 3.14;
console.log('원주율:', PI);

const PI;
PI = 3.14;

const PI = 3.14;
PI = 3.14159

첫번째 코드는 상수를 선언함과 동시에 초기화를 하였고

두번째 코드는 선언만 하는 것이 허용되지 않기 때문에 애러가 발생하고

마지막 코드는 한번 담긴 값은 변경이 불가능하기 때문에 애러가 발생하였다.