자바스크립트의 기본 문법

괴발개발·2025년 1월 6일

LG CNS AM Inspire Camp 1기

목록 보기
10/17
post-thumbnail

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

0개의 댓글