[YDKJY] Ch01. 자바스크립트 🌐

Nochi·2025년 1월 13일
0

JavaScript

목록 보기
5/5

You Don’t Know JS Yet 1장을 읽고 정리한 내용을 CHAT GPT에 정제한 내용

자바스크립트를 온전히 이해하는 사람은 없지만, 누구나 자바스크립트를 배울 수 있고 학습을 통해 친해질 수 있습니다. 이 글에서는 자바스크립트의 배경, 역사, 그리고 주요 개념을 포괄적으로 다룹니다.


1. 책에 대하여 📚

자바스크립트 학습은 "여행"과 같습니다. 목적지가 아닌 방향성을 가지고 꾸준히 탐구해야 합니다.

  • 이 책은 초보자를 위한 입문서가 아닙니다.
  • 학습의 첫 단추를 잘 끼우는 것이 중요합니다.

2. 자바스크립트 이름의 유래 🤔

자바스크립트라는 이름은 마케팅 목적에서 탄생했습니다.

  • 초기 이름: 모카(Mocha)
  • 넷스케이프에서 사용한 이름: 라이브스크립트(LiveScript)
  • 공식 공개 시 이름: 자바스크립트(JavaScript)

왜 이름이 자바스크립트일까요?
자바 개발자들에게 어필하기 위해 "자바"라는 이름을 사용했고, 당시 "스크립트(script)"는 가벼운 프로그램을 의미했습니다.

  • 자바스크립트와 자바는 별개의 언어이지만, 문법적으로 C 언어(C++)와 유사합니다.
  • 썬 마이크로시스템즈가 넷스케이프를 인수하며 자바스크립트 이름의 소유권도 가져갔고, 이후 오라클이 썬을 인수하면서 현재까지 이어지고 있습니다.

3. 명세서 📜

자바스크립트는 TC39 위원회에 의해 관리됩니다. 이 위원회는 브라우저 제조사(모질라, 구글, 애플), 하드웨어 제조사(삼성 등)의 대표들로 구성되어 있습니다.

  • TC39는 명세 변경 사항을 논의하고 국제 표준화 기구 ECMA에 제출합니다.
  • 자바스크립트는 단 하나의 명세서를 기준으로 구현되며, 주요 브라우저와 디바이스 제조사가 이를 준수합니다.

TC39의 절차

TC39에서 모든 제안은 다섯 단계(0 ~ 4)를 거칩니다.

  • 0단계: 비공식 아이디어가 TC39 위원의 지원을 받으면 시작됩니다.
  • 4단계: 최종 합의 후, ECMA에 제출되어 명세에 포함됩니다.

JS에는 공식 버전이 없습니다.
모든 자바스크립트는 단 하나의 명세를 따르며, 브라우저별로 반영 시기가 다를 뿐입니다.


3.1 자바스크립트와 웹 🌍

자바스크립트는 브라우저, 서버, 로봇, IoT 기기 등 다양한 환경에서 실행됩니다.

  • 브라우저 엔진 제조사들은 웹 콘텐츠 호환성을 유지하기 위해 명세서를 수정하기도 합니다.
  • 예: contains() 대신 includes()를 도입한 사례.

3.2 웹 전용 문법 📟

alert("JS야 안녕!");

alert()는 명세서에는 없지만 모든 브라우저에서 지원하는 함수입니다.

  • 대표적인 웹 전용 API: fetch(), getUserMedia() 등.
  • 브라우저 환경에 따라 동작이 달라질 수 있습니다.

명세서에 정의되지 않은 API는 "부록 B"에서 다루며, 이는 웹에서만 사용되는 기능을 포함합니다.


4. 자바스크립트의 다양한 패러다임 🛤️

자바스크립트는 다중 패러다임 언어로, 절차적, 객체 지향, 함수형 프로그래밍 스타일 모두를 지원합니다.

  • 절차적 프로그래밍: 코드가 순차적으로 실행됩니다.
  • 객체 지향 프로그래밍: 클래스와 객체 중심으로 코드를 구성합니다.
  • 함수형 프로그래밍: 순수 함수와 불변성을 중시합니다.

5. 하위 호환성과 상위 호환성 🔄

하위 호환성

  • 기존에 유효했던 문법은 앞으로도 유지됩니다.
  • 단, TC39가 하위 호환성을 깨는 결정을 할 수도 있습니다.

상위 호환성

  • 새로운 문법이 이전 명세서에서도 동작해야 하지만, 이는 현실적으로 어렵습니다.

트랜스파일과 폴리필

  • 트랜스파일: 새로운 문법을 오래된 문법으로 변환 (예: Babel).
  • 폴리필: 오래된 환경에서도 새로운 API를 사용할 수 있도록 추가 정의.

6. 인터프리터와 컴파일러 🔍

자바스크립트는 실행 전에 파싱과 컴파일 단계를 거칩니다.

실행 과정:

  1. 코드 트랜스파일 및 번들링.
  2. JS 엔진에서 파싱 후 추상 구문 트리 생성.
  3. 바이트 코드로 컴파일 및 최적화.
  4. 최종 실행.

자바스크립트는 JIT 컴파일러를 사용해 실행 중 성능을 최적화합니다.


7. 엄격 모드 🚨

ES5부터 도입된 엄격 모드(strict mode)는 자바스크립트 엔진이 코드를 최적화하고 효율적으로 실행할 수 있도록 돕습니다.

  • 엄격 모드는 선택 사항이지만, ES6 모듈에서는 기본 적용됩니다.
  • 초기 오류를 탐지하여 더 안전한 코드를 작성할 수 있습니다.

자바스크립트 정리 요약 ✨

  1. 자바스크립트 이름의 유래
    자바스크립트는 마케팅 목적으로 자바(Java)와 연관된 이름으로 만들어졌으며, 초기에는 모카(Mocha), 이후 라이브스크립트(LiveScript)로 불렸습니다. 넷스케이프와 썬 마이크로시스템즈의 법적 관계로 현재 이름이 유지됩니다.

  2. 명세 관리 (TC39)
    TC39 위원회는 자바스크립트 명세를 관리하며, 브라우저 제조사(구글, 애플, 모질라)와 하드웨어 제조사(삼성) 등의 대표로 구성됩니다. 모든 변경 사항은 5단계 절차를 거쳐 국제 표준에 포함됩니다.

  3. 웹과의 관계
    자바스크립트는 웹, 서버, IoT 등에서 사용되며, 명세와 브라우저 엔진 간의 호환성을 유지하기 위해 노력합니다. 웹 전용 API인 alert()fetch()는 명세에 없지만 브라우저 환경에서 지원됩니다.

  4. 프로그래밍 패러다임
    자바스크립트는 절차적, 객체 지향, 함수형 프로그래밍을 모두 지원하는 다중 패러다임 언어입니다.

  5. 호환성

    • 하위 호환성: 기존 문법은 유지됩니다.
    • 상위 호환성: 새로운 문법이 기존 엔진에서도 동작하도록 트랜스파일러(Babel)와 폴리필로 지원합니다.
  6. 실행 과정
    트랜스파일 및 번들링 -> 파싱 -> 바이트 코드 컴파일 -> 실행 단계를 거치며, JIT 컴파일러로 성능을 최적화합니다.

  7. 엄격 모드
    ES5에서 도입된 엄격 모드는 코드의 안전성과 최적화를 돕는 메커니즘입니다. ES6 모듈에서는 기본 적용됩니다.

0개의 댓글

관련 채용 정보