-
함수형 프로그래밍 입문Today I Learned 2021. 3. 22. 20:41
순수함수를 만들고, 순수함수를 조합하는 프로그래밍 패턴이 곧 함수형 프로그래밍. 함수형 프로그래밍이 지향하는 성공적인 프로그래밍은 부수 효과를 미워하고 조합성을 강조하는 것! 순수함수 - 동일한 인자를 주면 항상 동일한 결과를 리턴한다 (개발자가 평가시점을 다룰 수 있으므로 조합성을 높일 수 있다) - 부수효과가 없다 (부수효과: 함수가 리턴값으로 결과를 만드는 것 외에 외부의 상태에 영향을 미치는 것) => 오류를 줄이고 안정성을 높일 수 있다 => 모듈화 수준이 높다. 즉, 생산성을 높일 수 있다 let c = 10; function nonPureFunction(a, b) { c = a; return a + b; } 함수 nonPureFunction는 동일한 인자를 줬을 때 항상 동일한 결과를 리턴하..
-
프로세스(Process)와 쓰레드(Thread)Today I Learned 2021. 3. 10. 20:56
프로그램 컴퓨터에서 실행될 때 특정 작업을 수행하는 일련의 명령어들의 모음 어떤 작업을 위해 실행할 수 있는 파일 프로세스 컴퓨터에서 연속적으로 실행되고 있는 프로그램(음악 재생 프로그램, 문서 작성 프로그램 등) 프로그램을 구동하여 프로그램의 상태가 메모리 상에서 실행되는 작업 단위를 지칭 운영체제로부터 시스템의 자원을 할당받는 작업의 단위 운영체제 위에서 독립적으로 실행되고 있는 프로그램 Code, Data, Stack, Heap 으로 구성된다 프로세스의 구성 Code: 프로그램을 실행하기 위해 작성된 코드 Stack: 프로세스 안에서 함수들의 실행 순서에 대한 정보를 저장 Heap: 동적으로 할당된 변수들을 저장 Data: 전역 변수, 스태틱 변수들을 저장 쓰레드 프로세스에서 실행되는 여러 흐름의 ..
-
이벤트 버블링(bubbling)JavaScript 2021. 3. 4. 21:11
개발을 하면서 버튼 클릭 이벤트 처리를 하면서 의도하지 않은 결과를 만난적이 있다. 면접 때 질문 받았던 '이벤트 버블링' 이슈였다. 모르면 당황스럽지만, 알면 별 것 아닌 내용이다. 아래 그림과 같이 갈색 div박스, 초록색 div박스, 가장 안쪽에 child라는 버튼을 만들어 각각의 요소들마다 클릭되었을 때 콘솔 창에 event.currentTarget과 event.target을 출력하도록 이벤트를 등록해보자. ... Child ... 가장 안쪽에 있는 Child 버튼을 클릭하면 아래와 같이 Child가 속한 부모와 조상 엘리먼트에 등록된 이벤트까지 호출된다. 이벤트 버블링(bubbling) 위와 같이 동작하는 이유가 자바스크립트의 이벤트 버블링 때문이다. 브라우저에서 한 요소에 이벤트가 발생하면, ..
-
WEB APIsToday I Learned 2021. 2. 18. 21:11
API (Application Programming Interface) API는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.(위키백과) 휴대폰의 내부 구조나 작동 원리를 전혀 모르더라도 전원 버튼을 누르면 전원이 켜지고, 앱 아이콘을 누르면 앱이 실행된다는 것을 안다. 자판기의 작동원리를 몰라도 동전을 누르고 버튼을 누르면 원하는 음료를 뽑아 먹을 수 있다. 마찬가지로 윈도우에서 사용할 수 있는 앱을 만들고 싶다면 Windows에서 제공하는 API를 통해 만들 수 있고, 안드로이드나 맥 OS에서 제공하는 API를 이용하면 모바일 앱을 만들..
-
타입스크립트 - 호출 시그니처, 제네릭Typescript 2021. 2. 17. 21:12
여기 두 개의 number를 인수로 받아 한 개의 number를 반환하는 함수 sum이 있다. function sum(a: number, b: number): number { return a + b } 함수의 타입을 표현하는 방법, '호출 시그니처(Call signature)' (a: number, b: number) => number 호출 시그니처는 타입스크립트에서 함수의 타입을 지정할 때 사용하는 문법이다. 함수에 함수를 인수로 전달하거나, 함수를 반환하는 경우 이 문법을 통해 인수나 반환 함수의 타입을 지정할 수 있다. type LogFn = (text:string) => void // 호출 시그니처를 통해 LogFn 함수 타입 지정 let log: LogFn = (text) => console.l..
-
타입스크립트 입문Typescript 2021. 1. 28. 21:00
자바스크립트는 유연한 언어다. 개발자가 실수로 이상한 코드를 작성해도 암묵적 타입 변환을 수행한다. 5 + [] // 문자열 "5"로 평가 const myObj = {} myObj.a // undefined 평가 이렇게 이상한 코드를 입력해도 자바스크립트는 에러를 던지지 않는다. 이런 유연함 때문에 개발 중 실수로 입력한 코드로 프로그램이 망가졌을 때, 언제 어디서 실수를 했는지 찾기가 어렵다. 타입스크립트를 사용하면 이런 실수를 사전에 차단할 수 있다. 자바스크립트는 프로그램을 실행할 때 사용자의 실수를 알려주는 반면, 타입스크립트는 개발자가 텍스트 편집기에 코드를 입력하는 즉시 에러 메시지를 발생시키기 때문이다. 타입스크립트 컴파일러(TypeScript Compiler, TSC) 개발자가 작성한 텍스..
-
클로저(closure)JavaScript 2020. 12. 7. 15:29
클로저 : 외부 함수의 변수에 접근할 수 있는 내부 함수, 또는 이러한 작동 원리. function makeFunc() { var name = 'Mozilla'; function displayName() { alert(name); } return displayName; } var myFunc = makeFunc(); myFunc(); 내부함수 displayName은 외부함수 makeFunc의 지역 변수인 name에 접근이 가능하다. 여기서 displayName이 바로 클로저.