🍀 데이터 타입
기본형(primitive type) | 참조형(reference type) |
---|
숫자(Number) | 객체(Object) |
문자열(String) | 배열(Array) |
불리언(Boolean) | 함수(Function) |
null | 날짜(Date) |
undefined | 정규표현식(RegEXP) |
심볼(symbol) | Map,WeakMap,Set,WeakSet |
기본형(primitive type)
- 할당이나 연산 시 복사
- 값이 담긴 주소값을 복제
- 불변성
참조형(reference type)
- 할당이나 연산 시 참조
- 값이 담긴 주소값으로 이루어진 묶음을 가리키는 주소값을 복제
🍀 변수 (Variable)
: 데이터를 저장하는데 사용되는 이름이 붙은 저장소
✔ 변수 이름
- 시작 문자는 반드시 알파벳, 밑줄, 달러 기호($)로 시작해야 함, 숫자로 시작 불가능
- 공백 포함 불가능
- 대소문자 구분
- 예약어를 변수 이름으로 지정 불가능(ex.if, else, function, return)
- 의미 있는 이름을 통해 코드를 이해하기 쉽고 유지 보수하기 쉽도록 함
✔ 변수 종류
| var | let | const |
---|
범위 | function | block-level | block-level |
변수 중복 선언 | o | x | x |
변수 값 재할당 | o | o | x |
초기화 필요 | x | x | o |
var
- 함수 범위(function-scoped) 변수를 선언하는 데 사용
- 함수 내에서 선언된 변수는 해당 함수 내에서만 유효
- 변수를 선언하기 전에 사용할 수 있으며, 이를 "호이스팅(hoisting)"
- 변수를 재선언, 재할당 가능, 중복 선언 가능
let
- 블록 범위(block-scoped) 변수를 선언하는 데 사용
- 블록 범위 변수는 해당 변수가 선언된 중괄호({}) 블록 내에서만 유효
- 변수를 재할당 가능, 중복 선언 불가능
- 변수를 선언한 후 나중에 값으로 초기화 가능
const
- 상수(constant)를 선언하는 데 사용
- 한 번 할당된 값은 변경 불가능(상수화), 중복 선언 불가능
- 블록 범위 변수와 같이 블록 내에서만 유효
- 상수를 선언할 때 동시에 초기화해야 함
✔ 변수 사용 방법
선언(Declaration) : 변수를 정의하고 메모리 공간을 확보하는 과정
할당(Assignment) : 선언된 변수에 값을 저장하는 과정
🍀 리터럴 (Literal)
- 변하지 않는 값으로 프로그래밍에서 고정된 값
- 코드 상에 직접 표현된 데이터 값의 표기 방식
✔ 리터럴의 종류
- 정수 리터럴: 10, -5, 1000
- 부동 소수점 숫자 리터럴: 3.14, -0.001, 10.0
- 문자열 리터럴: 'Hello, World!', "OpenAI", '123'
- 불리언 리터럴: true, false
- 배열 리터럴: [1, 2, 3, 4], ['apple', 'banana', 'orange']
- 객체 리터럴: {name: 'John', age: 30}, {x: 10, y: 20, z: -5}
🍀 var 호이스팅
: 변수 선언이 해당 스코프의 최상위로 옮겨지는 것
console.log(x); // undefined
var x = 10;
var x; // 변수 선언이 호이스팅됨
console.log(x); // undefined
x = 10; // 할당