20240304

귤금·2024년 3월 4일

Node.js 4기 TIL

목록 보기
47/86

Today?

TS _ 1주차

☑️ JavaScript가 나온 이유

  • JavaScript는 원래 웹 페이지에 동적인 효과를 주기 위해 만들어진 스크립트 언어다.
  • 웹 페이지의 부드러운 상호작용을 위해 HTML과 CSS와 함께 사용되었음

☑️ JavaScript의 발전

  • 시간이 지나면서 웹 브라우저 내에서 실행되는 JavaScript의 성능을 높이고자 하는 니즈가 생김
  • 구글에서 V8 엔진을 공개
    • C++로 작성된 Google의 오픈소스 고성능 JavaScript 및 WebAssembly 엔진
    • Google Chrome 웹 브라우저에 처음 사용되었으며, 현재는 Node.js, Deno 및 다양한 다른 소프트웨어 프로젝트에서도 널리 사용됨
    • 자바스크립트 코드를 실행하기 위해 고성능을 제공하며, 자바스크립트를 직접 기계어로 컴파일하는 Just-In-Time (JIT) 컴파일 방식을 사용한다.

V8의 주요 특징

  • 빠른 실행 속도: JIT 컴파일을 통해 자바스크립트 코드를 빠르게 기계어로 변환하고 실행
  • 효율적인 메모리 관리: 자동 가비지 컬렉션을 통해 더 이상 사용되지 않는 메모리를 효과적으로 회수
  • ECMAScript 표준 지원: 최신 ECMAScript (자바스크립트의 표준화된 버전) 사양을 지원하여 최신 자바스크립트 기능을 사용할 수 있게 함
  • 확장성: V8은 다양한 플랫폼과 환경에서 확장 가능하도록 설계됨

☑️ Node.js의 등장

  • V8 엔진을 기반으로 Node.js라는 플랫폼 출시
    • JavaScript로도 백엔드를 작성할 수 있게 됨

자바스크립트의 약점

1. 실행 시간에 결정되는 변수 타입

  • JavaScript는 변수의 타입이 실행 시간에 결정됨
  • 이에 따라 개발자의 실수로 인한 오류가 발생하기 쉽고 찾기도 까다롭다.
    • ex) 변수에 잘못된 타입의 값이 할당되어 발생한 오류를 찾기 위해서는 실행 시간에 변수의 값과 타입을 모두 확인해야 하는 번거로움이 존재

2. 타입 체크가 까다롭지 않다(약함)

  • let, const와 같이 변수/상수를 구분하는 정도의 키워드만 지원됨
  • 예를 들면, let a = 1; a = “Hello”;가 얼마든지 가능한 것이고 이렇게 되면 약간의 실수로 예상하지 않은 동작이 발생할 수 있음
    • 숫자였던 a가 갑자기 문자열이 됨

3. 객체가 말랑말랑...

const obj = { latitude: 11.5, longitude: 47.1 };
const result = obj.latitude * obj.longitute; // 보통은 이런 실수는 컴파일러가 잡아줘야 되는데
console.log(result) // NaN이라는 엉뚱한 값 출현!

객체의 성질이 수시로 변화될 수 있기 때문에... 조심해야 함


이런 Javascript의 단점을 보완하며, 모든 기능을 포함해 나온 게...

TypeScript의 등장


회고

코드카타 좀 열심히 해야겠다..

0개의 댓글