코딩 컨벤션이란? 코딩 컨벤션은 읽고, 관리하기 쉬운 코드를 작성하기 위한 코딩 스타일 규약이다. 코딩 컨벤션은 왜 필요한가? 여러 개발자가 협업해야하는 상황에서 일종의 규약이 있다면, 유지보수 및 가독성이 좋아져, 협업이 쉬워진다. 특히, 자바스크립트의 경우 다른 언어의 비해 문법구조가 유연하기 때문에, 통일된 규약이 없다면 오류를 ...
Symbol
JS에서 this는 정적으로 할당 되지 않고, 동적으로 할당된다. 이 말을 쉽게 해석하자면 this가 선언되었을 때가 아닌, 호출되었을 때 결정된다는 의미이다.예)일반적으로 일반 함수에서 this는 전역 객체(window)를 가르킨다.모든 내부함수(함수속에 함수, 메소
크게 primitive type과 object type으로 나뉜다. 둘은 3가지 측면에서 다르다.원시값은 immutable value이다. 객체값은 mutable value이다.원시 값을 변수에 할당하면 변수에는 실제 값이 저장되고 객체를 변수에 할당하면 변수에는 참조
일련의 과정을 문으로 구현하고 코드 블럭으로 감싸서 하나의 실행 단위로 정의한 것함수의 선언함수 호출반복되는 코드를 재사용할 수 있도록 하여 편의성을 높이고 코드의 신뢰성을 높인다.자바스크립트에서 함수는 객체다.일반객체와 다른점은 함수는 호출할 수 있다는 것이다.함수를
\[\[]]를 통해 내부 슬롯과 내부 메서드를 표현한다.이 내부 슬롯과 내부 메서드는 ECMAScript 사양에 정의된 대로 구현되어 자바스크립트 엔진에서 실제로 동작하지만 직접적으로 개발자가 접근할 수 없다.단 \[\[ProtoType]] 과 같은 내부 슬롯은 \_\
Iterable, Iterator, Generator이 늘 헷갈렸습니다. 이번 기회에 헷갈리지 않게 정리하고자 합니다.Iterable protocol을 만족하는 객체입니다. Iterable protocol을 만족하는 모든 Object는 Iterable입니다.key로 S
JS에서 비동기 처리를 위한 도구로 Callback과 Promise를 이용한다.callback형식Promisecallback과 promise의 차이점은 크게 두가지가 있다.callback의 경우 아래의 예시처럼 연속적으로 사용했을 때, callback Hell이라고 불
모나드는 함수형 프로그래밍에서 함수 합성을 안전하게 하기 위한 어떤 타입(?) 혹은 집합같은 것이다. (컨테이너 같은것)우선 함수형 프로그래밍은 어떤 문제를 해결하기 위해 여러 방법(함수)들을 이용하여 해결하는 프로그래밍 기법이다.두 함수 f: C -> B와 g: B
함수를 합성하는 과정에서 예상치 못한 에러들이 생길 수 있다.함수 합성 중 에러에 대한 것도 처리해서 모나드를 만드는 것이 kleisli Composition인 것 같다.좀 더 직관적인 표현으로는 f(g(x)) = g(x)로 생각해볼 수 있다.위의 결과는 g에서 id를
f-lab 멘토링 중, if문과 switch문이 어떤 차이가 있는지에 대한 질문을 받았습니다. 이에 대해 정확하게 답변할 수 없었습니다. 비슷한 상황에 사용하는 두 분기문이 어떤 점이 다른지 궁금하기도 하여 정리해보고자 합니다.If문은 Expression 부분이 tru
Javascript는 컴파일 단계가 있는 정적언어가 아니라 동적으로 실행을 통해 상태가 결정되는 동적 언어다. 이 같은 특성을 가진 언어들은 동적으로 변수나 상태를 해석해야 하기 때문에 코드가 실행될 때 환경을 저장하는 특징이 있다. 이를 실행 컨텍스트(Excution
역시 정리되지 않는 개념은 내게 아니라는 생각이 든다. 알고 있다고 착각한 const, var, let에 대해 정리해본다. ❌ var 우선 JS에서 var는 ES6 이전부터 사용되고 있는 변수 선언 예약어이다. 특징 함수 스코프(scope)를 갖는다. 재할당 가능하
Java의 기능을 가져온 Javascript에서 this의 동작 방식은 Java와 많이 다르다. 클래스 기반의 Java의 this는 자기 자신, 인스턴스를 가르킨다. 하지만 Javascript의 this는 상황에 따라 달라진다. Java Javascript의 생성자
콜백 함수(callback function)은 다른 코드의 인자로 넘기는 함수를 의미한다. 넘겨받은 코드는 콜백 함수를 적절한 시기에 호출하여 실행시킨다. 콜백함수의 예로 자주 쓰이는 것이 있다.6시에 일어나기 위해 알람을 맞춰놓고 푸욱 자는 A6시에 일어나기 위해 매
Map 자료구조는 객체 리터럴(literal)과 비슷해보인다. key-value 쌍을 이용하는 자료구조이고 입력한 순서대로 순회도 할 수 있다. 하지만 둘은 차이가 있다. Map과 객체 리터럴의 차이 Map은 모든 타입 형태에 키가 가능하지만 객체 리터럴은 strin
Javascript 공부를 하면 항상 나오는 개념이 클로저(Closure)다. 아는 것 같지만 모르는게 더 많은 거 같은 신비한 클로저에 대해 정리해보고자 한다.클로저는 Javascript만 사용하는 개념은 아니다. 함수를 일급 함수로 다루는 언어 혹은 런타임에 함수를
자바스크립트는 흔히 프로토타입 기반 언어라 불린다. 모든 객체들이 메소드와 프로퍼티를 상속 받기 위해서 프로토타입 객체를 가진다는 의미다. prototype객체도 prototype을 갖고 상위의 프로토타입 객체도 마찬가지다. 이를 프로토타입 체인이라고 한다. 이에 대해
generator function을 통해 반환된 객체이다. Iterable protocol을 만족하면서 Iterator protocol을 만족하는 객체이다.generator의 특징을알기 위해서는 Iterable protocol과 Iterator protocol에 대해
정의 promise는 JS에서 비동기 처리를 하기 위한 객체이다. 3가지 상태를 가지고 있으며 미래의 성공 혹은 실패에 대한 값을 가지고 있다. 3가지 상태는 다음과 같다. pending: 처리되지 않은 대기상태 fulfilled: 연산이 성공한 상태 rejecte
then 메소드를 갖는 객체를 뜻한다. 체이닝이나 await과 같은 promise 패턴을 가진 구문에서 사용할 수 있다. 모든 promise객체는 thenable 객체이지만 역은 성립하지 않는다.위의 예시처럼 thenable 객체는 await를 통해 then() 메소드
ES6이전에 사용하던 function 키워드를 이용한 regular function과 ES6에 도입된 arrow function =>을 비교하고 무엇을 선택해야 하는지 정리해보고자 한다.Regular function은 호출할 때 This 바인딩을 진행한다. 메소드가 호
javascript에서 다음과 같은 메소드를 사용한 경험이 있을 것이다. "hello world!"와 1.4435 는 Primitive 타입이다. 즉, 객체가 아니기에 가지고 있는 메소드가 없다. 하지만 메소드를 사용할 수 있는 이유가 바로 Boxing 과정이 이루어