자바스크립트 4

[이펙티브 타입스크립트] 2022-02-14 TIL

[1장 - 아이템 2] - 타입스크립트 컴파일러 설정은 command line argument와 tsconfig.json을 통해 설정할 수 있다. - 타입스크립트 컴파일러 설정은 주로 입출력과 관련된 내용을 다루지만 핵심적인 기능에 대한 설정도 존재한다. (1) noImplicitAny: enable시 암시적인 any를 사용할 수 없게 된다. 따라서 명시적인 any 혹은 분명한 타입을 제시해줘야 한다. 일반적인 경우에서는 해당 옵션을 enable하는 것이 좋다. 다만, javascript 코드를 typescript 코드로 전환하는 과정에서는 (migration) 제외한다. (2) strictNullChecks: 기본적으로 null과 undefined는 모든 타입의 변수에 할당될 수 있다. (예를 들어서 ..

[Javascript] strict mode (엄격 모드)

ES5에서 등장한 strict mode는 기존 Javascript가 기본으로 채택하던 sloopy mode(느슨한 모드, 공식 용어는 아님)을 해제하고 보다 엄격한 스타일로 코드를 작성하도록 사용하는 모드를 말한다. strict 모드를 사용하면 sloopy 모드에서는 넘어갈 수 있던 오류들이 에러로 변환되면서 보다 안전한 프로그램을 작성할 수 있다. 또한 자바스크립트 엔진의 최적화 작업을 방해하는 코드들을 지양하기 때문에 엄격 모드를 통해 코드를 작성하면 속도 면에서 비엄격 모드보다 우수한 모습을 보이기도 한다. (물론 엄격 모드를 쓴다고 무조건 느슨한 모드보다 빠르다는 아님) strict mode를 사용하는 방법은 간단하다. 함수 혹은 script 최상단에 'use strict'; 문장을 작성하면 해당..

[Javascript] 자바스크립트의 배열 (Array)

자바스크립트의 배열 (Array of Javascript) 자바스크립트의 배열은 사실 우리가 아는 일반적인 배열이 아니다. 자바스크립트의 배열은 해시 테이블로 구현된 객체이며 요소들끼리 메모리상으로 나란히 위치하지도 않는다. 배열을 생성한 후 typeof를 통해 그 타입을 출력하면 'object'가 반환됨을 확인할 수 있다. 또한 객체의 모든 프로퍼티들에 대한 정보를 보여주는 Object.getOwnPropertyDescriptor( ) 메소드를 활용하면 자바스크립트의 Array는 인덱스와 length를 프로퍼티 키로 가지는 Object임을 확인할 수 있다. 그렇기 때문에 자바스크립트 객체에 들어가는 요소들은 서로 연속되어 위치하지도 않으며 서로 동일한 타입이 들어가지 않아도 된다. (파이썬의 list와..

[Javascript] 이벤트 루프 (Event Loop)

자바스크립트는 '단일 스레드'기반 언어이다. 즉, 한 번에 하나의 작업만을 처리할 수 있다. 보다 정확히 표현하자면 자바스크립트 엔진은 '단일 콜 스택'을 활용하고 하나의 메인 스레드를 가진다. 그러나 자바스크립트가 돌아가는 실제 환경(브라우저, Node 등)은 여러 개의 스레드가 사용된다. 하나의 콜 스택을 활용하는 자바스크립트 엔진과 여러 스레드를 활용하는 실제 구동 환경이 서로 연동될 수 있도록 해주는 것이 바로 '이벤트 루프'이다. (이벤트 루프는 앞서 언급한 단일 메인 스레드를 관리해준다.) 자바스크립트는 이벤트 루프를 통해 비동기 방식으로 동시성을 지원한다. 참고로 이벤트 루프는 자바스크립트 엔진에서 지원되는 것이 아니라 브라우저 혹은 NodeJS에 의해 제공된다. (NodeJS는 libuv라..