본문 바로가기

JavaScript17

[PoiemaWeb] 클로저 1. 클로저 함수 outerFunc 내에서 내부함수 innerFunc가 선언되고 호출되었다. 이때 내부 함수 innerFunc는 자신을 포함하고 있는 외부함수 outerFunc의 변수 x에 접근할 수 있다. 이는 함수 innerFunc가 함수 outerFunc의 내부에 선언되었기 때문이다. 함수 innerFunc가 함수 outerFunc의 내부에 선언된 내부함수이므로 함수 innerFunc는 자신이 속한 렉시컬 스코퍼를 참조 할 수 있다. 내부함수 innerFunc가 호출되면 자신의 실행 컨텍스트가 실행 컨텍스트 스택에 쌓이고 변수 객체와 스코프 체인 그리고 this에 바인딩할 객체가 결정된다. 이때 스코프 체인은 전역 스코프를 가리치는 전역 객체와 함수 outerFunc의 스코프를 가리키는 함수 out.. 2023. 3. 21.
[PoiemaWeb] this 자바스크립트의 함수는 호출될 때, 매개변수로 전달되는 인자값 이외에, arguments 객체와 this를 암묵적으로 전달 받는다. 자바스크립트의 경우 this에 바인딩되는 객체는 한가지가 아니라 해당 함수 호출 방식에 따라 this에 바인딩되는 객체가 달라진다. 다시 말해, 함수를 선언할 때 this 바인딩할 객체가 정적으로 결정되는 것이 아니고, 함수를 호출할 때 함수가 어떻게 호출되었는지에 따라 this에 바인딩할 객체가 동적으로 결정된다. 1. 함수 호출 전역객체는 모든 객체의 유일한 최상위 객체를 의미하며 일반적으로 Browser-side에서는 window, Server-side(Node.js)에서는 global객체를 의미한다. 전역객체는 전역 스코프를 갖는 전역변수를 프로퍼티로 소유한다. 글로벌.. 2023. 3. 15.
[PoiemaWeb] 프로토타입 프로토타입 기반 객체지향 프로그래밍 언어는 클래스 없이도 객체를 생성할 수 있다. 자바스크립트의 모든 객체는 자신의 부모 역할을 담당하는 객체와 연결되어 있다. 그리고 이것은 마치 객체 지향의 상속 개념과 같이 부모 객체의 프로퍼티 또는 메소드를 상속받아 사용할 수 있게 한다.이러한 부모 객체를 Prototype 객체 또는 Prototype이라 한다. Prototype 객체는 생성자 함수에 의해 생성된 각각의 객체에 공유 프로퍼티를 제공하기 위해 사용한다. 자바스크립트의 모든 객체는 [[Prototype]]이라는 인터널 슬롯을 가진다. [[Prototype]]의 값은 null 또는 객체이며 상속을 구현하는데 사용된다. [[Prototype]] 객체의 데이터 프로퍼티는 get 액세스를 위해 상속되어 자식 .. 2023. 3. 12.
[PoiemaWeb] 함수의 형태(즉시 실행, 내부, 재귀, 콜백) 1. 즉시 실행 함수 함수의 정의와 동시에 실행되는 함수를 즉시 실행 함수라고 한다. 최초 한번만 호출되며 다시 호출할 수 없다. 이러한 특징을 이용하여 최초 한번만 실행이 필요한 초기화 처리등에 사용할 수 있다. 2. 내부 함수 함수 내부에 정의된 함수를 내부함수라 한다. 아래 예제의 내부함수 child는 자신을 포함하고 있는 부모함수 parent의 변수에 접근할 수 있다. 하지만 부모함수는 자식함수(내부함수)의 변수에 접근할 수 없다. 또한 내부함수는 부모함수의 외부에서 접근할 수 없다. 3. 재귀 함수 재귀 함수는 자기 자신을 호출하는 함수를 말한다. 재귀 함수는 자신을 무한히 연쇄 호출하므로 호출을 멈출 수 있는 탈출 조건을 반드시 만들어야 한다. 4. 콜백 함수 콜백 함수는 함수를 명시적으로 호.. 2023. 3. 10.