Javascript
Koans를 통해 알게 된 것들
Koans는 불교에서 유래된 단어로 결론을 내리기 전에 이게 왜 맞는지 깊게 고민한다는 의미라고 한다. 단순히 문제를 푸는 것이 아니라, 문제를 푸는 과정에서 왜 문제의 해답이 나왔는 지에 대해 되짚어보면서 깊이 이해하라는 뜻으로 받아들였다. 이번 Koans를 풀면서 알게 된 것들을 정리한다.mocha, chai : 테스트 자동화Koans는 mocha, chai 라는 프레임워크와 라이브러리를 사용해 우리가 푼 문제가 맞는지 틀린지 자동으로 실행하여 확인해준다. 이는 단순히 문제를 푸는 것을 넘어, 테스트를 자동화하여 개발할 때 유용하게 사용 할 수 있다.코드를 테스트를 해야 하는 이유는 우리가 단순히 함수 하나를 구현하고 끝내지 않기 때문이다. 여러 함수를 사용하고 유기적으로 돌아가는 어플리케이션 제작을..
비동기
동기 vs. 비동기비동기의 주요 사례비동기를 순차적으로 구현하는 세 가지 방법CallBackPromise메서드 체이닝async / await타이머 API동기 vs. 비동기요청을 순차적으로 처리하는 것을 동기적(synchronous)이라고 표현한다. 먼저 들어온 요청 A를 처리하는 동안 그 이후에 들어온 요청 B를 막고(blocking), 처리가 완료되면 B을 처리하기 때문에 B의 시작 시점과 A의 완료 시점이 같은 상황을 말하는 것이다.이에 반해, 비동기(asynchronous)는 요청이 들어오는 것을 막지 않고(non-blocking) 처리가 완료된 요청은 바로 완료한다. 이는 먼저 들어온 요청 A의 완료 시점과 이후의 요청 B의 시작 시점이 다르다. 이 때, 처리하는 시점은 다르더라도 일단 후에 들어..
고차함수
일급 객체(first-class citizen)고차 함수(higher order function)다른 함수를 인자로 받는 경우함수를 리턴하는 경우함수를 인자로 받고 함수를 리턴하는 경우내장 고차 함수Array.filter()Array.map()Array.reduce()ex. 배열을 객체로 만드는 예제고차 함수의 중요성 : 추상화추상화값 수준에서의 추상화사고 수준에서의 추상화사고 수준의 추상화의 예시일급 객체(first-class citizen)비행기에 퍼스트 클래스, 이코노미 클래스가 나뉘어 다른 대우를 받는 것 처럼 JavaScript에는 특별한 대우를 받는 일급 객체가 존재한다. 대표적인 일급 객체 중 하나가 함수다. 함수는 아래와 같은 특별 취급을 받는다.변수에 할당(assignment) 할 수 있..
불변성(__**Immutability)**__
불변성 (Immutability)불변성 개념은 JavaScript에만 존재하는 것이 아닌 다른 언어에도 존재하는 개념이다. 말 그대로 변하지 않는 것을 의미하며, 불변 데이터는 한 번 생성되고 나면 그 뒤에는 변할 수 없다. Immutable typeJavaScript에서는 원시 타입(Boolean, String, Number, Null, undefined, Symbol)이 이에 해당된다. 이 값은 메모리영역 내에서 변경이 불가능하며 변수에 할당할 때 완전히 새로운 값이 만들어져 다시 할당된다.let name = 'foo'; let newName = name; name = 'bar'; console.log(newName); // foo console.log(name); // bar위와 같은 상황에서 na..
원시 자료형과 참조 자료형
원시 자료형과 참조 자료형원시 자료형 (primitive type data)객체가 아니면서 메서드(method)를 가지지 않는 Boolean, String, Number, Null, undefined, Symbol 이 해당된다. 이 값은 메모리영역 내에서 하나의 값을 담는 스택(stack)에 각각 저장되며, 변수의 이름을 통해 스택에서 호출해 값을 사용 할 수 있다.왜 “원시” 자료형일까?원시 자료형은 모두 하나의 데이터를 담고 있다. 과거에는 데이터 저장소의 용량이 제한되어 변수 하나에 데이터 용량이 제한된 하나의 원시형 자료를 담을 수밖에 없었다. 사진에서 쓰이는 언어는 옛날 컴퓨터에 사용되던 BASIC이라는 컴퓨터 언어이다. string과 number는 쉽게 확인 할 수 있지만 배열에 상응하는 데이..