TIL

    TIL - 20220717

    TIL - 20220717

    오늘은 모던 JavaScript 튜토리얼에서 call/apply와 데코레이터, 포워딩(https://ko.javascript.info/call-apply-decorators)에 대해서 공부했다. 작성한 질문은 다음과 같다. 데코레이터란 함수를 감싸는 래퍼로 함수의 행동을 변화시킨다. 주요 작업은 여전히 함수에서 처리하지만, 캐싱과 같은 기능을 추가할 때 사용하면 좋다. call은 주어진 컨텍스트와 인수를 이용하여 함수를 호출하고, apply는 this에 context가 할당되고, 유사 배열 args가 인수로 전달되어 함수가 호출된다. 데코레이터, call, apply라는 개념과 예제를 지금까지 한 번도 본 적이 없었고 처음 공부해보는 개념이라 공부하면서도 내가 잘 이해하고 있지 않구나라는 생각이 들었다...

    TIL - 20220716

    TIL - 20220716

    오늘은 모던 JavaScript 튜토리얼에서 setTimeout과 setInterval을 이용한 호출 스케줄링(https://ko.javascript.info/settimeout-setinterval#ref-57)에 대해서 공부했다. 작성한 질문은 다음과 같다. 일정 시간이 지난 후에 원하는 함수를 예약 실행(호출)할 수 있게 하는 것을 호출 스케줄링이라고 부르며 구현하는 방법으로 setTimeout과 setInterval이 있다. 대기 시간의 단위는 밀리초(millisecond)이며 1000ms가 1초이다. setTimeout과 setInterval 모두 호출하면 타이머 식별자(timer identifier)가 반환되며, 이를 이용해 스케줄링을 취소하거나 중단하고 싶을 때 타이머 식별자를 이용하면 된다..

    TIL - 20220715

    TIL - 20220715

    오늘은 모던 JavaScript 튜토리얼에서 객체로서의 함수와 기명 함수 표현식(https://ko.javascript.info/function-object)에 대해 공부했다. 작성한 질문은 다음과 같다. 자바스크립트에서 함수의 자료형은 객체이다. 함수를 호출 가능한 객체라고 생각하면 이해가 편하며 함수를 호출할 수 있을 뿐만 아니라 객체처럼 프로퍼티를 추가, 제거하거나 참조를 통해 전달할 수도 있다. 함수의 이름을 알고 싶다면 'name' 프로퍼티를 사용하면 된다. 다음과 같이 확인할 수 있다. function threeMul(a, b, c) { return a * b * c; } threeMul.name // 'threeMul' 함수 매개변수의 개수를 알고 싶다면 'length' 프로퍼티를 사용하면 ..

    TIL - 20220714

    TIL - 20220714

    오늘은 모던 JavaScript 튜토리얼에서 오래된 'var'(https://ko.javascript.info/var)에 대해서 공부했다. var를 쓰면 안 된다라는 사실은 예전 JavaScript를 처음 배울 때부터 들었는데 그래도 var에 대해서 간단히라도 공부는 해놔야 할 것 같다는 생각이 들어서 공부하게 됐다. 작성한 질문은 다음과 같다. var로 선언한 변수는 함수 스코프 혹은 전역 스코프를 갖는다. 함수 스코프를 갖는 경우는 함수 안에 var를 선언했을 때이며, 나머지 경우에서는 전역 스코프를 갖는다. 예를 들어 if문 안에 var로 변수 선언을 해주었다면 let으로 했을 때는 undefined 에러를 만나게 되겠지만 var는 아닌 것이다. var를 쓰면 안 되는 이유 중 가장 큰 이유는 va..

    TIL - 20220713

    TIL - 20220713

    오늘은 모던 JavaScript 튜토리얼에서 변수의 유효 범위와 클로저(https://ko.javascript.info/closure)에 대해서 공부했다. 공부하면서 내용이 많기도 하고 또 중요하다는 생각도 들어서 자세하게 정리한 글을 따로 작성할 예정이다(작성 후 수정 예정). 먼저, 작성한 질문은 다음과 같다. 자바스크립트는 함수 지향 언어이다. 왜냐하면, 함수를 동적으로 생성할 수 있고, 생성한 함수를 다른 함수의 인수로 넘길 수 있으며, 생성된 곳이 아닌 곳에서 함수를 호출할 수 있기 때문이다. 질문에 대한 대답을 작성하면서도 함수를 동적으로 생성한다는 말이 무슨 의미인지, 생성한 함수를 다른 함수의 인수로 넘기는 예를 공부해야겠다는 생각이 들었다. 내가 작성하면서도 이게 무슨 의미일까 바로 고민..

    TIL - 20220712

    TIL - 20220712

    오늘은 모던 JavaScript 튜토리얼에서 나머지 매개변수와 스프레드 문법(https://ko.javascript.info/rest-parameters-spread)에 대해서 공부했다. 다음과 같은 질문을 작성했다. 함수에 넘겨주는 인수의 개수 제약은 존재하지 않는다. 하지만, 함수가 인수를 두 개 받는다고 가정하여 인수를 다섯 개 넘겨주어도 앞에 있는 두 개를 사용하고 나머지 세 개는 사용하지 않는다. 나머지 매개변수 ...를 붙이는 건 남아있는 함수의 매개변수들을 배열로 한데 모아 집어넣어라는 의미이다. 이 나머지 매개변수 ...를 통해 사용하고 싶은 매개변수는 앞에서 사용하고 남아있는 매개변수들을 배열로 모을 수 있다. 또한, 가장 중요한 건 나머지 매개변수 ...는 항상 마지막에 위치해야 한다...

    TIL - 20220711

    TIL - 20220711

    오늘은 모던 JavaScript 튜토리얼에서 재귀와 스택(https://ko.javascript.info/recursion)에 대해서 공부했다. 재귀는 하나의 큰 목표 작업을 동일하면서 간단한 작업 여러 개로 나눌 수 있을 때 사용하면 좋다. 가장 처음 하는 호출을 포함한 중첩 호출의 최대 개수를 재귀 깊이라고 부르며, 깊이는 일단 10,000까지 가능하지만 대다수의 엔진이 100,000을 넘길 수 없다. 실행 중인 함수의 실행 절차에 대한 정보는 실행 컨텍스트에 저장된다. 함수 내부에 중첩 호출이 존재하면 다음과 같은 절차로 수행된다. 실행 중인 함수가 중지된다. 중지된 함수와 연관있는 실행 컨텍스트가 실행 컨텍스트 스택에 저장된다. 중첩 호출이 실행된다. 중첩 호출이 끝난 이후에 실행 컨텍스트 스택에..

    TIL - 20220710

    TIL - 20220710

    오늘은 모던 JavaScript 튜토리얼에서 JSON과 메서드(https://ko.javascript.info/json)에 대해서 공부했다. 대학교 동기와 개발을 본격적으로 시작하면서 프로젝트를 진행하며 JSON을 처음 접했을 때는 뭔지도 모르고 강의 내용 그대로 복사해 사용한 적이 있었다. 오늘 그 JSON에 대해 제대로 공부해 볼 수 있어서 좋았다. 작성한 질문은 다음과 같다. JSON 사용하는 경우는 네트워크를 통해 객체를 전달하거나 로깅 목적으로 객체를 출력하는 경우, 데이터 교환을 목적으로 사용하는 경우가 있다. 객체를 JSON으로 바꿔주는 메서드: JSON.stringify JSON을 객체로 바꿔주는 메서드: JSON.parse JSON으로 인코딩 된 객체는 일반 객체와 달리 이러한 특징을 갖..