[JavaScript] 변수와 상수

변수

변수 선언과 초기화

변수는 이름이 붙은 메모리 공간으로, 데이터를 저장하고 변경할 수 있습니다. 최신 자바스크립트에서는 let 키워드를 주로 사용하여 변수를 선언합니다.

변수를 선언한 후 나중에 값을 할당할 수 있고, 선언과 동시에 초기화를 할 수 있습니다.

// 선언 후 할당
let a;
a = 1;

// 선언과 동시에 초기화
let b = 1;

동적 타이핑

자바스크립트는 동적 타입 언어이므로, 한 변수에 다양한 값을 자유롭게 할당할 수 있습니다.

let a = "test"; // 문자열
a = 1; // 숫자
a = { a: 1 }; // 객체

상수

상수는 한 번 초기화되면 값을 변경할 수 없는 변수입니다. const 키워드를 사용하여 선언과 동시에 초기값을 할당해야 합니다.

const TEST = 1;
// 재할당 시 에러
TEST = 2; // Error 발생

변수와 상수의 네이밍 규칙

변수 네이밍 규칙

  • 간결하면서도 변수의 역할을 명확히 표현
  • 여러 단어가 합쳐진 경우 카멜 케이스 사용
    더보기
    카멜케이스(CamelCase) 란?
    여러 단어로 네이밍을 작성할때 첫 단어는 소문자로 시작하고 그 다음 단어부터 첫글자를 대문자로 작성합니다.
    ex) getUserName, totalAmount
  • 예약어 및 특수문자 주의

상수 네이밍 규칙

  • 변경되지 않는 값임을 한눈에 알 수 있도록 대문자와 언더스코어를 활용
const MAX_CONNECTIONS = 100;

변수의 스코프

스코프란?

변수가 참조될 수 있는 범위

블록 스코프

letconst로 선언한 변수는 블록단위로 유효합니다.

{
	let test = 1;
	console.log(test) // 블록안에 있기 때문에 1
}

console.log(test) // 블록 밖에 있어서 Error 발생

함수 스코프

var 키워드는 함수 스코프를 가지며, 블록 스코프를 무시합니다.

{
	var test = 1;
	console.log(test) // 1 발생
}

console.log(test) // 함수 스코프라서 1 발생
function test() {
	var a = 1;
    console.log(a) // 함수 스코프라서 1 발생
}

console.log(a) // 함수 밖이라서 Error 발생

var 키워드는 블록 스코프를 무시하므로, 의도치 않는 변수 노출이 있을 수 있으므로, let 또는 const를 사용해야 합니다.

값 복사와 참조

원시 타입의 값 복사

숫자, 문자열, 불리언 등의 값은 직접 복사됩니다.

let a = 1;
let b = a;
b = 2;
console.log(1) // 1 발생(원본이 변경되지 않음)

참조 타입의 복사

객체, 배열 등은 메모리의 주소가 복사됩니다.

let a = { x: 1 };
let b = a;
b.x = 2;
console.log(a.x) // 2 발생(같은 객체를 참조)

변수 선언 없이 사용

엄격 모드가 없으면 변수 선언 없이 값을 할당할 수 있지만 전역 변수로 생성되어 의도치 않은 버그 생성됩니다.