자바스크립트를 사용하면서 반복되는 객체를 어떻게 효율적으로 사용해야 할지 고민을 합니다. 그렇기 때문에 ES6가 들어서면서 생기게된 이터러블과 이터레이터에 관련된 개념을 정리하여 새기기 위하여 정리를 했습니다. 이터러블(iterable)이란? 우리가 사용하는 String, Array도 iterable이고 ES6에서 추가된 Set, Map도 iterale입니다. 이터러블을 충족하기 위해서는 두가지 조건을 충족해야 되는데 아래와 같은 조건을 충족해야합니다. Symbol.iterator의 @@iterator 메소드를 구현해야 합니다. [Symbol.iterator] 메서드는 Iterator 객체를 반환해야 한다. 이터러블을 알아보기 전에 잠시 이터레이터(iterator)에 대해 알아봅시다. iterator 반..

전체 글
좋은 영향력을 전파하기 위해 노력하는 엔지니어 리오입니다.자바스크립트 기반의 프로젝트를 진행하면서 String, number, boolean, undefinded, null 등의 값과는 다른 Symbol이라는 타입도 있다는 것을 알게되었습니다. 심볼은 다른 타입과 달리 독특하게 동작하기 때문에 그와 관련해서 정리를 하기 위한 글입니다. 심볼이란? 문서에서는 아래와 같이 정의를 하고 있습니다. Symbol() 함수는 심볼(symbol) 형식의 값을 반환하는데, 이 심볼은 내장 객체(built-in objects)의 여러 멤버를 가리키는 정적 프로퍼티와 전역 심볼 레지스트리(global symbol registry)를 가리키는 정적 메서드를 가지며, "new Symbol()" 문법을 지원하지 않기 때문에 생성자 어떤 면에서는 불완전한 내장 객체 클래스(built-..
일급 함수 함수를 다른 변수와 동일하게 다루는 언어를 일급 함수를 가졌다고 표현합니다. 함수를 다른 함수의 파라미터로 제공하거나, 함수가 함수를 반환 또는 변수에도 함수를 할당할 수 있습니다. 변수에 함수 할당 const helloWorld = function() { console.log("hello World"); } helloWorld(); //output: hello World 익명 함수를 변수에 할당하여 괄호를 통해 함수를 호출함. 함수를 인자로 전달 function hello() { return "hello, "; } function printHello(message, name){ console.log(message() + name); } printHello(hello, "철수"); //outp..

자바스크립트에 개념에 대해 공부 하던 중 호이스팅이라는 단어가 나와서 호이스팅 메커니즘이 자바스크립트에서 어떻게 동작하고 호이스팅이 무엇인지 알기 위해 정리를 하겠습니다. 호이스팅(hoisting) 이란 호이스팅은 코드가 실행되기 전 변수 및 함수에 대한 선언이 해당 스코프의 맨 위로 이동되는 자바스크립트 매커니즘 입니다. 이것은 함수와 변수가 선언된 위치에 관계없이 해당 스코프가 전역인지 지역인지 여부에 관계없이 해당 범위의 맨 위로 이동이 됩니다. Undifind vs ReferenceError - 선언되지 않은 변수 사용시 console.log(typeof variable); // Output: undefined Javascript에서는 선언 되지 않은 변수를 사용시 undefined 값이 할당되어..

넷플릭스, 티빙, 디즈니 플러스등 다양한 OTT 플랫폼 서비스 시장에 나오고 있다. 기존에 영상 매체를 사용하지 않던 몇몇 플랫폼 서비스들도 틱톡, 유튜브 쇼츠 등의 유행으로 짧은 영상 형태로 컨텐츠를 제공하는 것이 트렌드가 되면서 시장이 커지기 시작했고 더불어 스트리밍과 관련된 기술들이 많이 발전하게 되었다. 그런 스트리밍 기술들을 직접적으로 사용하기 전에 스트리밍 기술의 기반이라고 할 수 있는 스트리밍 프로토콜들을 알아보고 각각의 장단점을 살펴보고자 한다. 스트리밍 프로토콜의 작동 방식 스트리밍 프로토콜을 설명하기에 앞서서 프로토콜을 간단하게 설명하자면 컴퓨터끼리 송수신할 때 어떤 규칙으로 통신할 지 정의한 것이다. 예를들어 우리가 한국에 살면 한국어를 암묵적으로 쓰는 것처럼 스트리밍 프로토콜의 동작..
커밋 메시지 커밋의 컨벤션은 커밋 메시지안에 기능, 수정사항 및 주요 변경 사항을 설명해야 됩니다. 커밋 메시지의 양식은 아래의 양식 처럼 구성해야 합니다. [optional scope]: [optional body] [optional footer] 커밋은 해당 라이브러리의 소유자에게 의도를 전달하기 위해 다음과 같은 구조요소를 설명해야 합니다. fix: fix: 유형의 커밋은 해당 코드베이스의 버그를 수정하다는 의미. feat: feat: 유형의 커밋은 해당 코드베이스의 새로운 기능을 추가한다는 의미. BREAKING CHANGE: BREAKING CHANGE: 는 footer에 추가하거나 type/scope 에 ! 를 붙이고 추가한다. 해당 커밋은 새로운 버전으로 import해주거나 추가로 다른 모듈..