1. 자바 스크립트
1.1 자바 스크립트란?
- 웹 브라우저에서 실행되는 프로그래밍 언어
- 웹 페이지를 동적으로 만들거나 상호작용을 추가하는 데 사용
- 초기에는 브라우저 내에서만 실행되었지만, 현재는 Node.js와 같은 런타임 환경을 통해 서버 측 개발에서도 사용 가능
1.2 브라우저와 자바스크립트
- 브라우저는 자바스크립트 코드를 실행하기 위한 환경
- 브라우저에는 자바스크립트 코드를 해석하고 실행하는 JavaScript 엔진이 내장되어 있다. (인터프리터)
1.3 자바스크립트의 특징
동적 타이핑 : 변수의 타입을 명시하지 않아도 사용 가능
인터프리터 언어 : 코드를 즉시 실행
이벤트 기반 프로그래밍 : 사용자의 상호작용을 기반으로 동작
플랫폼 독립성 : 브라우저만 있으면 실행 가능
확장성 : 다양한 라이브러리와 프레임워크와 함께 사용 가능 (React, Vue, Angular 등)
인터프리터와 컴파일러
| 구분 | 인터프리터 (Interpreter) | 컴파일러 (Compiler) |
|---|
| 작동 방식 | 코드를 한 줄씩 읽고 바로 실행 | 전체 코드를 한 번에 번역해서 실행 파일 생성 |
| 실행 시점 | 프로그램 실행 중 | 실행 전에 미리 전체 코드를 번역 |
| 속도 | 실행 속도는 느림 | 실행 속도는 빠름 |
| 오류 처리 | 오류 발생 시 그 줄에서 멈춤 | 전체 코드 분석 후 모든 오류를 한 번에 알려줌 |
| 대표 언어 | JavaScript, Python, Ruby 등 | C, C++, Go, Rust 등 |
| 개발 편의성 | 실험이나 스크립트 작성에 편리 | 최적화된 프로그램 제작에 적합 |
2. 자바스크립트 기본 문법
2.1 변수와 상수
var : 함수 레벨 스코프를 가지는 변수 선언 키워드
let : 블록 스코프를 가지는 변수 선언 키워드
const : 블록 스코프를 가지는 상수 선언 키워드
함수 스코프와 블록 스코프
| 비교 기준 | 함수 스코프 | 블록 스코프 |
|---|
| 범위 | 함수 전체 내부 | {} 블록 내부 (조건문, 반복문, 함수 등) |
| 사용 키워드 | var | let, const |
| 접근 가능성 | 함수 내부에서 어디서든 접근 가능 | 블록 내부에서만 접근 가능 |
2.2 데이터 타입
2.2.1 기본 타입(Primitive Type)
원시적인 값 그 자체로 저장
| 타입 | 설명 | 예시 |
|---|
| 숫자(Number) | 숫자 형태의 데이터 (정수 및 실수) | 1, -10, 3.14 |
| 문자열(String) | 텍스트 형태 데이터 (문자 나열) | 'hello', "world" |
| 불리언(Boolean) | 참(true)과 거짓(false)을 나타냄 | true, false |
| null | 명시적으로 비어있음을 나타내는 값 | null |
| undefined | 값이 아직 할당되지 않음 | undefined |
| Symbol | 유일무이한 값을 가진 식별자 생성 (ES6부터) | Symbol('id') |
null 과 undefined 차이
null : 명시적으로 비어있는 값 (개발자가 설정)
undefined : 값이 할당되지 않은 상태
2.2.2 참조 타입(Reference Type)
메모리 주소를 참조하여 데이터에 접근
| 타입 | 설명 | 예시 |
|---|
| 객체(Object) | 키-값(key-value) 형태로 데이터를 저장하는 자료구조 | {name: 'Alice', age: 30} |
| 배열(Array) | 순서가 있는 값들의 모음, 인덱스 접근 가능 | [1, 2, 3] |
| 함수(Function) | 실행 가능한 코드 블록 | function(){} |
2.3 연산자
2.3.1 산술 연산자
| 연산자 | 의미 | 예시 | 결과 |
|---|
+ | 더하기 | 3 + 2 | 5 |
- | 빼기 | 5 - 2 | 3 |
* | 곱하기 | 4 * 2 | 8 |
/ | 나누기 | 10 / 2 | 5 |
% | 나머지 | 7 % 3 | 1 |
문자열 연결 : 문자열 + 문자열
"Hello" + " " + "World"
2.3.2 비교 연산자
| 연산자 | 의미 | 예시 | 결과 |
|---|
== | 값만 비교 | '5' == 5 | true |
=== | 값과 타입 모두 비교 (권장) | '5' === 5 | false |
!= | 값만 다름 비교 | '5' != 5 | false |
!== | 값 또는 타입 다름 비교 | '5' !== 5 | true |
< | 작다 | 3 < 5 | true |
> | 크다 | 3 > 5 | false |
<= | 작거나 같다 | 5 <= 5 | true |
>= | 크거나 같다 | 5 >= 3 | true |
== 과 ===
console.log(5 == '5');
console.log(5 === '5');
console.log(null == undefined);
console.log(null === undefined);
2.3.3 논리 연산자
| 연산자 | 의미 | 예시 | 결과 |
|---|
| && | AND (그리고) | true && false | false |
| || | OR (또는) | true || false | true |
| ! | NOT (부정) | !true | false |
2.3.4 할당 연산자
| 연산자 | 의미 | 예시 | 결과 |
|---|
= | 값 할당 | x = 5 | x에 5 할당 |
+= | 더해서 할당 | x += 2 | x = x + 2 |
-= | 빼서 할당 | x -= 1 | x = x - 1 |
*= | 곱해서 할당 | x *= 3 | x = x * 3 |
/= | 나눠서 할당 | x /= 2 | x = x / 2 |
%= | 나머지 연산 후 할당 | x %= 2 | x = x % 2 |
2.4 조건문과 반복문
2.4.1 조건문
2.4.2 반복문