0. JavaScript
- 정식 명칭은 ECMAScript
- ES6 이후로 ECMAScript에 년도를 붙이는 이름을 사용 중이다.
➡️ JS Versions
1. 표현식(expression)
5
"hello"
true
[1, 2, 3]
{a: 1}
var a = 5;
var b = 5 + 3;
var c = true && false;
function add(a, b) {
return a + b;
}
add(10, 20);
2. 문장(statement)
- 프로그램이 수행할 동작을 정의하는 코드
- 하나 이상의 표현식으로 구성될 수 있으며, 보통 세미콜론(;)으로 끝난다.
- 예: 선언문, 조건문, 반환문, 반복문 등
let x = 6;
if (x > 10) {
console.log("크다");
} else {
console.lgo("작다");
}
for (let i = 0; i < 10; i ++) {
console.log(i);
}
3. 키워드(keyword)
- 특정 동작을 정의하거나 예약어로 사용되어 특정 기능을 수행하는 단어들
- 변수 이름이나 함수 이름으로 사용할 수 없다.
4. 식별자(identifier)
- 변수, 함수, 클래스, 모듈 등의 이름을 정의하는 데 사용
- 특징
- 문자, 숫자, 달러 기호($), 밑줄을 사용 가능
- 문자, 달러 기호($), 밑줄로 시작(숫자로는 시작 불가능)
- 예약어는 식별자로 사용 불가능
- 대소문자 구분
- 관례
- 클래스 이름은 항상 대문자로 시작
- 변수, 함수, 속성, 메서드의 이름은 항상 소문자로 시작
- 여러 단어로 구성된 식별자는 각 단어의 첫 글자를 대문자로 사용
▶️ Camel Case
4-1. case style
- snake_case
- kebab-case
- camelCase
- PascalCase
5. 자료형
5-1. 원시(Primitive) 자료형
- null: "값이 없음"을 나타내는 데이터 타입
- undefined: 변수는 선언되었지만 값이 할당되지 않은 상태
- boolean: 참, 거짓
- number: 숫자(정수, 실수, Infinity, -Infinity, NaN)
- bignt: -2^53 ~ 2^53-1 범위 밖의 숫자를 표현
- string: 문자열
- Symbol: 고유하고 변경 불가능한 원시 값으로, 주로 객체 속성의 공유한 식별자를 만들기 위해 사용
5-2. bigint
- number type으로 계산하면 오류가 나는 숫자를 처리할 때 사용
- bigint의 사용: 숫자 뒤에 n을 추가해준다.

- bigint의 계산: number type의 경우 값에 변화가 없지만 bigint type은 1이 증가했다.

5-3. Symbol
- ==: 데이터 비교
- ===: 자료형&데이터 비교
- Symbol: 유니크한 객체 자체를 비교

6. 객체 타입
6-1. user defined objects
const person = { name: "홍길동", age: "26" };
6-2. built-in objects
- objects, arrays, dates, maps, sets, intarrays, floatarrays, promises 등
- Set: 중복 데이터 허용 ❌
- Map: key & value

- Map과 Object의 비교
: Map이 Object에 비해 비교적 더 빠르고 유연하므로 반복적인 데이터 처리에 용이하다.
| Map | Object |
|---|
| 키 타입 | 모든 값 | 문자열, Symbol |
| 삽입 순서 | 유지 | 유지되지 않을 수도 있음 |
| 반복 지원 | 직접 지원 | 직접 지원하지 않음(Object.keys 활용) |
| 성능 | 더 나은 성능 | 상대적으로 느림 |