실행 컨텍스트의 생성과 식별자 검색 과정 전역 객체 생성 평가 이전에 생성되며, 빌트인 전역 프로퍼티, 빌트인 전역 함수, 표준 빌트인 객체가 추가되며 클라이언트 사이드 Web API또는 특정 환경을 위한 호스트 객체가 추가된다. 전역객체도 Object.prototype을 상속받는 프로토타입 체인의 일원이다. 전역 코드 평가 전역 실행 컨텍스트 생성 실행 컨텍스트에 푸시한다. 전역 렉시컬 환경 생성 전역 렉시컬 환경을 생성하고, 전역 실행 컨텍스트에 바인딩 한다. 렉시컬 환경은 환경 레코드와 외부 렉시컬 환경에 대한 참조로 구성된다. 객체 환경 레코드와 선언적 환경 레코드로 구성되어 있다. 객체 환경 레코드 생성 객체 환경 레코드는 var로 선언한 전역 번수, 함수 선언문으로 정의한 전역 함수, 빌트인 ..
ECMAScript 사양은 소스코드를 전역코드, 함수코드, eval코드, 모듈코드로 구분한다. 소스코드의 평가와 실행 모든 소스코드는 실행에 앞서 평가 과정을 거치며, 코드를 실행하기 위한 준비를 한다. 즉 “소스코드의 평가”와 “소스 코드의 실행” 과정으로 나누어 실행한다. 소스 코드 평가과정에서는 실행 컨텍스트를 생성하고 선언문을 실행하여 실행 컨텍스트가 관리하는 스코프에 등록한다. 실행 컨텍스트의 역할 전역 코드 평가 선언문 실행, 스코프에 등록. 전역 코드 실행 런타임 시작. 전역 변수에 값이 할당되고 함수가 호출된다. 함수 코드 평가 매개 변수와 선언문 마찬가지로 먼저 실행. 함수 코드에서는 arguments객체도 지역 스코프에 등록된다, this 바인딩 결정 함수 코드 실행 런타임 시작. 매개..
this this는 자신이 속한 객체 또는 자신이 생성한 인스턴스를 가리키는 자기 참조 변수 this 바인딩은 함수 호출 방식에 의해 동적으로 결정된다. strict mode가 적용된 일반 함수 내부에선 this는 undefined가 바인딩 된다. 일반 함수 내부에선 this를 사용할 필요가 없기 때문이다. 함수 호출 방식과 this 바인딩 일반 함수 호출 기본적으로 this에는 전역 객체가 바인딩 된다. 메서드 호출 메서드를 호출한 객체, 즉 메서드를 호출할 때 마침표(.) 연산자 왼쪽에 기술한 객체가 바인딩 된다. person.getName() 에서 getName()메서드의 this는 person에 바인딩 된다. 메서드 내부의 this는 프로퍼티로 메서드를 가리키고 있는 객체와 관계없고 메서드를 호출..
Swiper useSwiper()훅 useSwiper()훅은 Swiper 컴포넌트 내부에서 사용할 수 있는 훅으로, Swiper에 관련된 메서드를 제공합니다. 그런데 Swiper 컴포넌트 외부에서는 어떻게 불러올 수 있을까요? 기존 Swiper 컴포넌트 내부에서 사용하는 방법 아래 코드와 같이 버튼 컴포넌트를 하나 만듭니다. 컴포넌트 내부에 useSwiper()훅을 불러와 메서드를 사용한 다음, 버튼 컴포넌트를 Swiper 컴포넌트 내부에 불러옵니다. import { useSwiper } from "swiper/react"; export default function SlideNextButton() { const swiper = useSwiper(); return ( swiper.slideNext()}>..
18809번: Gaaaaaaaaaarden 첫째 줄에 정원의 행의 개수와 열의 개수를 나타내는 N(2 ≤ N ≤ 50)과 M(2 ≤ M ≤ 50), 그리고 초록색 배양액의 개수 G(1 ≤ G ≤ 5)와 빨간색 배양액의 개수 R(1 ≤ R ≤ 5)이 한 칸의 빈칸을 사이에 두 www.acmicpc.net 풀이 방법 배양액을 뿌릴 수 있는 케이스를 모두 찾습니다. 케이스를 순회하며 꽃이 피는 개수를 BFS를 통해 구합니다. DFS가 아닌 BFS로 구하는 이유는, 꽃이 핀다면 시간이 지나도 배양액은 흘러가지 않고, 꽃이 핀 자리에서 확산이 멈추기 때문입니다. 따라서 DFS로 구하면 정답을 구할 수 없다고 판단했습니다. 아래 코드 주석을 통해 확인해주세요 let fs = require('fs'); let inp..