자바스크립트란?
자바스크립트가 어떤 특징을 가진 언어인지 간단히 알아봅시다!
1. 웹브라우저에서 동작하는 프로그래밍언어
자바스크립트는 대부분의 웹 브라우저(Chrome, Firefox, Safari 등)에 기본 탑재되어 있으며,
HTML과 CSS와 함께 웹을 구성하는 3대 요소 중 하나입니다.
- 브라우저 내에서 즉시 실행 가능하고, 별도의 설치 없이 동작합니다.
- 버튼 클릭, 입력 처리, 애니메이션 등 동적인 UI를 구현할 수 있습니다.
예: 사용자가 버튼을 클릭하면 팝업을 띄우는 로직
2. 인터프리터 언어 (개발자가 별도의 컴파일 작업을 수행하지 않음)
자바스크립트는 컴파일 단계 없이 코드가 한 줄씩 해석되고 즉시 실행되는 언어입니다.
- 개발자가 작성한 코드를 별도의 번역 과정 없이 바로 실행
- 코드 변경 후 브라우저를 새로고침하면 즉시 반영됨
- 디버깅과 개발 속도가 빠름
예: console.log("Hello!")를 작성하면 바로 콘솔에 출력
3. 객체 지향 프로그래밍 지원
자바스크립트는 객체를 생성하고, 그 안에 데이터(속성)와 기능(메서드)을 함께 담아 구조화할 수 있습니다.
이는 "무엇을 처리할 것인가"보다 "누가 처리할 것인가"에 초점을 맞춘 구조입니다.
- 클래스 기반 문법(class)을 지원
- 상속, 캡슐화, 다형성 개념 구현 가능
예: Car, User, Button 등 실생활 개념을 코드로 모델링 가능
4. 동적 타이핑 언어
자바스크립트는 변수를 선언할 때 타입을 지정하지 않아도 됩니다.
런타임에 변수에 어떤 값이 들어가는지에 따라 타입이 자동 결정됩니다.
let x = 10; // 숫자
x = "hello"; // 문자열로 변경 가능
- 코드가 유연하고 빠르게 작성 가능
- 하지만 타입 오류가 런타임에 발견될 수 있어 TypeScript 등 정적 타입 도구를 함께 사용
5. 함수형 프로그래밍
자바스크립트는 함수를 일급 객체(First-Class Citizen)로 취급합니다.
즉, 함수 자체를 변수에 할당하거나 다른 함수에 인자로 전달하거나 반환값으로 사용할 수 있습니다.
- 고차 함수(higher-order function), 순수 함수 등 함수형 프로그래밍 패턴 지원
- map, filter, reduce 등 배열 메서드로 간결하고 선언적인 코드 작성 가능
const double = x => x * 2;
[1, 2, 3].map(double); // [2, 4, 6]
일급 객체(first-class object)란?
함수를 일반 값과 마찬가지로 변수에 할 당하거나 함수의 인자로 전달하거나 함수의 반환값으로 사용할 수 있는 객체를 의미
// 함수를 변수에 할당
const add = function(a, b) {
return a + b;
}
// 함수를 인자로 받는 함수
function calculate(func, a, b) {
return func(a, b);
}
// 함수를 반환하는 함수
function getAddFunction() {
return add;
}
// 함수를 일급 객체로 다루어 코드의 재사용성을 높임
console.log(calculate(add, 2, 3)); // 5
console.log(getAddFunction()(2, 3)); // 5
고차 함수(higher-order function) 란?
함수를 인자로 받거나, 함수를 반환 하는 함수를 의미
// 고차 함수 예시: 함수를 인자로 받는 함수
function operate(func, a, b) {
return func(a, b);
}
function add(a, b) {
return a + b;
}
function multiply(a, b) {
return a * b;
}
console.log(operate(add, 2, 3)); // 5
console.log(operate(multiply, 2, 3)); // 6
6. 비동기 처리
자바스크립트는 싱글 스레드 언어이지만, 이벤트 루프와 콜백 큐를 활용하여 비동기 처리가 가능합니다.
- setTimeout, fetch, Promise, async/await 등을 통해
- → 동시성 처리가 가능해 사용자 경험을 향상시킴
- 서버로부터 데이터를 받아오거나 애니메이션을 실행할 때 활용
예: 사용자가 버튼을 누르면 데이터를 불러올 때까지 기다리지 않고 UI 반응
7. 클라이언트와 서버 모두에서 사용 가능
자바스크립트는 원래 브라우저(클라이언트 측)에서 동작하도록 만들어졌지만,
Node.js의 등장으로 서버 사이드 개발도 가능해졌습니다.
- 클라이언트: 버튼 클릭, DOM 조작, 폼 입력 등
- 서버: API 처리, DB 연동, 파일 시스템 접근 등
- 하나의 언어로 전체 웹 애플리케이션 개발 가능 (풀스택 개발에 유리)
예: React(프론트엔드) + Express(백엔드) 조합