[JavaScript] JavaScript 특징

전홍석·2025년 7월 26일

javascript

목록 보기
6/11
post-thumbnail

JavaScript

JS는 HTML, CSS 와 함께 웹의 3대 핵심 요소 중 하나로 웹 브라우저 내에서 실행되는 유일한 프로그래밍 언어이다
클라이언트 측 스크립트로 시작했지만 현재 서버, 데스크톱, 모바일 앱, IoT 등 다양한 플랫폼에서 사용되는 범용 프로그래밍 언어로 발전했다

언어적 특성

문법 차용

  • C, Java 에서 기본적인 문법 구조 (if, for 등) 차용
  • Scheme 에서 일급 함수 (First-class function) 개념 차용
  • Self 에서 프로토타입 기반 상속 채택

멀티 패러다임 지원

  • 명령형 프로그래밍 : 변수, 제어문을 통한 로직 구성
  • 함수형 프로그래밍 : 고차 함수, 클로저, 순수 함수 등을 통한 선언적 프로그래밍
  • 객체지향 프로그래밍 : 객체 생성 및 상속을 통한 구조화, 프로토타입 기반 OOP

    일급 함수 (First-class function)
    다른 값들 (숫자, 문자열) 처럼 변수에 할당, 함수의 인자로 전달, 함수의 변환값으로 사용할 수 있는 객체

    // 1. 함수 자체를 변수에 할당 가능
    const greet = function() {
     console.log("Hello")
    }
    
    // 2. 함수 인자로 전달 가능
    function run(callback) {
     callback()  // 함수 실행
    }
    run(greet)  // "Hello"
    
    // 3. 함수에서 함수를 반환 가능
    function makeMultiplier(factor) {
     return function(num) {
       return num * factor
     }
    }
    
    const double = makeMultiplier(2)
    console.log(double(5)) // 10

실행 방식

JS는 전통적인 인터프리터 언어로 분류되며 개발자가 별도로 컴파일 과정을 거치지 않고 작성된 코드를 즉시 실행할 수 있다
하지만 최신 브라우저 엔진 (Chrome v8, Firefox SpiderMonkey, Safari JavaScriptCore) 은 하이브리드 방식 (JIT) 방식을 사용한다

인터프리터
코드를 한 줄씩 해석하여 실행 (즉시 실행, 유연성 높음)

JIT (Just In Time) 컴파일러
실행 도중 성능을 분석하여 최적화된 머신 코드로 변환 ( 빠름 )

이를 통해 JS 는 인터프리터 언어 특유의 유연성을 유지하면서 컴파일 언어 못지않은 고속 실행 성능을 확보하고 있다

OOP (객체지향 프로그래밍)

JS는 다른 객체지향 언어와 달리 프로토타입 기반 객체지향 언어이다
이는 클래스 없이도 객체 간 상속이 가능하다는 뜻이다

특징

  • 프로토타입 상속 : 객체는 다른 객체를 직접 상속받아 동작한다
  • 동적 타입과 유연한 객체 구조 : 객체는 런타임 중 자유롭게 속성을 추가하거나 변경할 수 있다
  • 클래스 문법 : ES6 이후 도입되었지만, 내부적으로는 여전히 프로토타입 기반으로 작동한다
  • 캡슐화/ 은닉화 : private 키워드는 없었으나, ES2022 이후 # 키워드를 활용한 프라이빗 필드를 지원한다
    class User {
        #password
        constructor () {
            this.name = name
            this.#password = password
        }
    }
profile
취뽀까지 숨참기

0개의 댓글