자바스크립트 일반

Steve·2021년 12월 2일
0

자바스크립트의 특

  1. 웹 브라우저에서 HTML, CSS 와 함께 웹 페이지를 구성하는 프로그래밍 언어
  2. 타입을 따지지 않는 동적 타입 언어
  3. 인터프리터를 사용하는 스크립트 언어. 별도의 컴파일 작업 없이 코드가 즉시 실행됨.

컴파일러와 인터프리터의 차이

컴파일러는 프로그래머가 작성한 코드를 0과 1의 바이너리 코드(기계어)로 변환해서 cpu가 실행할 수 있게 만들어줍니다. 컴파일러는 모든 코드를 한번에 번역하고 실행 파일을 만든 뒤 코드가 실행이 됩니다. 그래서 한번 컴파일을 하면 코드를 바꾸지 않는 한 다음에 실행할 때 빠르게 실행할 수 있다는 장점이 있습니다. 하지만 컴파일 과정에서 오류가 발견된다면 아예 실행이 되지 않고 멈춥니다. 또 처음에 컴파일을 할 때 시간이 오래 걸립니다.

제가 c++ 로 윈도우에서 게임을 개발할 때 코드를 수정하고 실행할 때마다 컴파일이 될 때까지 기다렸던 경험이 있습니다. C 나 C++ 같은 언어가 컴파일러를 사용하는 언어라고 알고 있습니다.

그에 비해 인터프리터는 한번에 번역하고 실행파일을 만드는게 아니라 한 줄마다 해석하고 실행을 합니다. 따라서 컴파일 시간을 기다리지 않고 바로 실행할 수 있는 장점이 있습니다. 하지만 매번 번역을 해야 하기 때문에 컴파일러보다 퍼포먼스 면에서 느리다는 단점이 있습니다.

기타)

최근의 chrome v8 같은 엔진은 내부적으로 컴파일 과정도 거친다고 알고 있습니다. 주로 반복해서 실행되는 코드를 컴파일해서 원래 코드와 바꿉니다. 그래서 자바스크립트의 성능이 많이 향상되었습니다. 이와같은 방법을 JIT(Just-In-Time)이라고 합니다.

또한 최근에 등장한 WebAssembly 는 c++ 같은 저수준 언어를 바이너러 형식으로 컴파일하여 웹에서도 네이티브에 가까운 속도를 낼 수 있게 해주는 것으로 알고 있습니다.

자바스크립트 생태계에 존재하는 컴파일러, ES6을 지원하지 않는 브라우저를 지원해야 할 경우

자바스크립트 생태계에서 존재하는 컴파일러로는 Babel 과 Typescript 가 있습니다. Babel 은 ES6 같은 최신 자바스크립트 기능을 이를 지원하지 않는 브라우저에서도 사용 가능한 스크립트로 컴파일하는 컴파일러입니다. Typescript 는 타입스크립트로 작성된 코드를 자바스크립트로 변환합니다.

== 와 === 의 차이

== 는 단순 값만 비교, ===(strict equal operator) 는 데이터 타입까지 비교
예)
1 == "1"
null = undefined
true == 1
위 예시는 다 true, === 할경우에는 false

strict mode

es5 에서 추가된 모드로 문법을 더 엄격하게 적용한다.

profile
게임과 프론트엔드에 관심이 많습니다.

0개의 댓글