분류 전체보기

    TIL - 20220821

    TIL - 20220821

    오늘은 모던 JavaScript 튜토리얼에서 브라우저 환경과 다양한 명세서에 대해 공부했다. 작성한 질문은 다음과 같다. 호스트란 자바스크립트가 돌아가는 플랫폼을 호스트라고 부른다. 브라우저, 웹 서버가 호스트의 예시라고 볼 수 있으며, 각 플랫폼은 해당 플랫폼에 특정되는 기능을 제공하는데, 자바스크립트 명세서에선 이를 호스트 환경이라고 부른다. DOM이란 Document Object Model의 약자로, 문서 객체 모델을 뜻하며, 웹 페이지 내의 모든 컨텐츠를 객체로 나타내주는 역할을 한다. document 객체는 페이지의 기본 진입점 역할을 하며, document 객체를 이용해 페이지 내 무엇이든 변경할 수 있고, 원하는 것을 만들 수도 있다. BOM이란 Browser Object Model의 약자로..

    TIL - 20220820

    TIL - 20220820

    오늘은 모던 JavaScript 튜토리얼에서 Bigint에 대해 공부했다. 작성한 질문은 다음과 같다. Bigint는 숫자의 크기, 길이의 제약 없이 정수를 다룰 수 있게 도와주는 숫자형이다. JavaScript에서 2^53 - 1 보다 큰 값 혹은 -(2^53-1) 보다 작은 값의 정수는 숫자형을 통해 나타낼 수 없다. 만약, 더 큰 숫자를 할당하려면 잘리게 된다. Bigint를 사용하는 방법은 정수 리터럴 끝에 n을 붙이거나 함수 Bigint에 문자열 혹은 숫자를 인자로 전달하여 호출하면 Bigint 타입의 값을 만들 수 있다. const bigint = 1234567890123456789012345678901234567890n; const samebigint = Bigint("123456789012..

    TIL - 20220819

    TIL - 20220819

    오늘은 모던 JavaScript 튜토리얼에서 커링에 대해 공부했다. 작성한 질문은 다음과 같다. 커링이란 f(a, b, c)와 같은 단일 호출로 처리할 함수를 f(a)(b)(c)와 같이 각각의 인수가 호출 가능한 프로세스로 호출된 후 병합되도록 변환하는 것이다. 커링은 f(a, b, c)와 같이 여러 인자를 받아 호출하는 함수에서 인자 중 하나를 고정된 partial 함수를 만들 경우에 사용하면 좋다. 왜냐하면, 인자 중 하나를 고정된 partial 함수로 만들어도 커링한 후에 고정하는 것이면 잃는 것은 없으며 기존 함수의 기능도 정상적으로 동작하기 때문이다.

    TIL - 20220818

    TIL - 20220818

    오늘은 모던 JavaScript 튜토리얼에서 Eval: 문자열 코드 실행하기에 대해 공부했다. 작성한 질문은 다음과 같다. eval은 문자열 형태의 코드를 실행하는 JavaScript 내장 함수이다. let code = 'alert("Hello")'; eval(code); // Hello 모던 프로그래밍에서 eval을 사용하지 않는 이유는 과거 JavaScript에 쓸 수 있는 기능이 많지 않아서 eval을 사용해야만 처리할 수 있는 것들이 많았다. 하지만 지금은 eval을 사용하지 않아도 처리할 수 있기 때문에 eval을 쓸 이유가 없다. 또한, eval은 외부 변수 접근 시 부작용이 발생할 수 있다. 오늘은 전설로만 듣던 eval에 대해 공부했다. eval은 외부 변수 접근 시 부작용이 발생할 수 있..

    TIL - 20220817

    TIL - 20220817

    오늘은 모던 JavaScript 튜토리얼에서 Proxy에 대해 공부했다. 작성한 질문은 다음과 같다. Proxy란 특정 객체를 감싸서 프로퍼티 읽기, 쓰기와 같은 객체에 가해지는 작업을 중간에서 가로채는 객체이다. 여기서 가로챈 작업은 Proxy 자체에서 처리되기도, 원래 객체에서 처리되기도 한다. Proxy에서 사용하는 get 메서드는 프로퍼티 읽기를 가로채기 위한 메서드이며, 프로퍼티를 읽으려 할 때, get 메서드가 작동한다. Proxy에서 사용하는 set 메서드는 프로퍼티 쓰기를 가로채기 위한 메서드이며, 프로퍼티에 값을 쓰려고 할 때, set 메서드가 작동한다.

    TIL - 20220816

    TIL - 20220816

    오늘은 모던 JavaScript 튜토리얼에서 동적으로 모듈 가져오기에 대해 공부했다. 작성한 질문은 다음과 같다. 어제자 TIL에서 작성한 export와 import 문법은 '정적인' 방식이기에 다음과 같은 제약 사항이 존재한다. import문에 동적 매개 변수를 적용할 수 없다: import ... from '~'같이 모듈 경로엔 문자열만 들어갈 수 있기 때문에 함수 호출 결괏값을 경로로 쓸 수 없다. 런타임이나 조건부로 모듈을 불러올 수 없다. import() 표현식은 위와 같은 제약 사항을 해결하기 위해 나온 해결책이며 import(module) 표현식은 모듈을 읽어 이 모듈이 내보내는 것을 모두 포함하는 객체를 담은 resolve된 프라미스를 반환한다. 호출은 어디에서나 가능하다.

    TIL - 20220815

    TIL - 20220815

    오늘은 모던 JavaScript 튜토리얼에서 모듈 내보내고 가져오기에 대해 공부했다. 작성한 질문은 다음과 같다. 모듈을 내보내는 방법으로는 선언부 앞에 export를 붙여 내보내는 방법과 선언부와 떨어진 곳에 export를 붙여 내보내는 방법이 있다. 모듈을 가져오는 방법으로는 import {...}를 이용하여 중괄호 안에 가져오고 싶은 무언가를 담아서 가져오면 된다. 가져올 것이 많으면 import * as 와 같이 객체 형태로 원하는 것들을 가지고 올 수 있다. 어떤 걸 가져올지 구체적으로 명시하는 게 좋은 이유는 다음과 같다. 웹팩과 같은 빌드 툴이 로딩 속도를 높이기 위해 모듈들을 한데 모으는 번들링과 최적화를 수행하며 사용하지 않는 리소스가 삭제되기도 하기 때문이다. 어떤 걸 가지고 올지 명시..

    TIL - 20220814

    TIL - 20220814

    오늘은 모던 JavaScript 튜토리얼에서 모듈 소개에 대해 공부했다. 작성한 질문은 다음과 같다. 모듈은 간단하게 파일 하나라고 생각하면 된다. 모듈은 클래스, 객체 하나 혹은 유틸 함수들로 구성된 라이브러리 하나로 구성된다. export를 사용하면 변수나 함수 앞에 붙여 사용하면 외부 모듈에서 해당 변수나 함수에 접근할 수 있다. import를 사용하면 외부 모듈의 변수나 함수와 같은 기능을 가져올 수 있다. 모듈의 핵심 기능으로 다음이 존재한다. 모듈은 항상 엄격 모드로 실행된다. 모듈 레벨 스코프라는 자신만의 스코프가 있다. 동일한 모듈을 여러 곳에서 사용되더라도 모듈 최초 시 단 한 번만 실행된다. import.meta 객체는 현재 모듈에 대한 정보를 제공한다. 모듈 최상위 레벨의 this는 ..