JavaScript
-
Typescript Generic Function (제네릭 함수)카테고리 없음 2022. 3. 30. 22:44
Generic은 Java, C#과 같은 객체지향 프로그래밍에서 사용하는 기법이다. 제네릭은 어떠한 클래스 혹은 함수에서 사용할 타입을 그 함수나 클래스를 사용할 때 결정하는 프로그래밍 기법이다. 쉽게 말하면 메서드 매개변수의 구체적인 타입을 기재하지 않고 다양한 타입을 처리할 수 있는 기술이며, 잘만 사용한다면 코드의 재사용성을 높일 수 있다. 원래 javascripts는 타입 선언이 필요하지 않고, 그렇기에 특정 타입을 위해 만들어진 클래스나 함수도 타입에러를 런타임에서 일으킬 뿐이다. 그래서 javascript는 제네릭이란 말을 들을 일이 없다. 그래서 이런 타입 기반언어에서 generic을 사용하는데 Typescript에서도 사용할 수 있으며 함수, 인터페이스, 클래스의 재사용성을 높일 수 있다. ..
-
Scope/Closure/Hoisting카테고리 없음 2022. 3. 22. 17:19
Scope scope란 쉽게 말하면 변수와 그 값이 유요한 범위를 말한다. scope는 크게 Local scope, Global scope, Lexical scope로 나뉜다. Local scope 에서 선언된 변수는 전역 변수에서 사용이 불가능하다. 반대로 이야기 하면 Global scope는 스크립트 전체에 참조되는것을 의미한다. 특정 함수내에서의 우선 순위는 지역 변수가 전역 변수 보다 우선순위가 높다. 함수 내에서 전역 변수에 새로운 값을 할당해 준다면 전역 변수는 새로운 값으로 수정된다. 따라서 웬만하면 전역변수는 수정이 안되는 const나 사용을 하지 않는편이 더 좋다. 그리고 전역변수와 지역변수의 관계 에서 스코프 체인 이라는 개념이 나온다. 내부 함수에서는 외부 함수의 변수에 접근 가능하지..
-
Node.js 이벤트 루프카테고리 없음 2022. 3. 16. 23:54
Node.js? 대부분의 노드 책을 펴자마자 알 수 있는 것은 Node.js는 V8 엔진 기반의 event-driven, 논블로킹, 싱글스레드 js 런타임 이다. 라고 말을 한다. Spring Boot 혹은 Spring MVC 같은 경우에는 멀티스레드 기반이다. 새로운 request가 올때마다 새로운 스레드를 하나씩 polling 한다. 하지만 Node 같은 경우에는 하나의 스레드 만으로 여러 비동기 작업을 블로킹 없이 수행할 수 있고 그 기반은 event-loop 가 존재 한다. 위 사진은 Node.js 의 구성도 인데 Node.js 는 C++로 작성된 런타임이고 그 내부에 V8 엔진과 libuv를 가지고 있다. libuv? libuv는 C++로 작성되었고, Node.js 가 사용하는 비동기 I/O 라..