본문 바로가기

Node.js7

js[자바스크립트] Scope 종류[렉시컬 환경, 실행 컨텍스트, 스코프체인] Scope 란? 변수에서 접근할 수 있는 범위를 말한다. 식별자(변수)를 찾기 위한 규칙이라고도 한다. 자바스크립트 엔진은 식별자를 결정할 때 “식별자를 검색할 때 사용하는 규칙”이 있다. 이때 코드의 문맥과 환경을 고려한다. ※코드의 문맥과 환경 렉시컬 환경: 코드가 어디서 실행되며 어떤 코드가 있는지 코드의 문맥을 이루는 환경 실행 컨텍스트: 렉시컬 환경을 구현한 것. 모든 코드를 평가하고 실행한다. 렉시컬 환경 렉시컬 환경(Lexical Environment)은 식별자와 식별자에 바인딩된 값, 그리고 상위 스코프에 대한 참조를 기록하는 자료구조로 실행 컨텍스트를 구성하는 컴포넌트다. 렉시컬 환경은 스코프와 식별자를 관리한다. ※환경 레코드(Environment Record) 스코프에 포함된 식별자를.. 2022. 3. 26.
function || AllowFunction 차이 둘의 차이를 알기에 앞서 우선 바인딩을 알아보자. Binding 메서드와 객체를 묶어놓는 것을 바인딩 함수를 호출하는 부분에서 실제 함수가 위치한 메모리를 연결하는 것도 바인딩이다. 바인딩은 정적 바인딩(static binding)과 동적 바인딩(dynamic binding)으로 구분할 수 있다. 정적 - 실행 시간 전에 일어남. 실행 시간에는 변하지 않는 상태로 유지. 동적 - 실행 시간에 이루어지거나 실행 시간에 변경됨. Function || AllowFuction 1.this Function 일반 함수는 함수를 선언할 때 this에 바인딩할 객체가 정적으로 결정되는 것이 아니고, 함수를 호출할 때 함수가 어떻게 호출되었는지에 따라 this에 바인딩할 객체가 동적으로 결정된다. AllowFuntion.. 2022. 1. 12.
js 버젼별로 추가된기능 es2022~ ECMAScript 2022 클래스의 새 멤버들 1. Private Instance Fields, Methods, and Accessors # 접두사마크는 클래스의 필드, 메서드 또는 접근자를 private로 표시합니다. 즉, 외부에서 액세스할 수 없습니다. class Example { #value; constructor(value) { this.#value = value; } #calc() { return this.#value * 10; } print() { console.log(this.#calc()); } } const object = new Example(5); console.log(object.#value); // SyntaxError console.log(object.#calc()); // S.. 2022. 1. 11.
동기 vs 비동기 || 블로킹 vs 논블로킹 블로킹(blocking) vs 논블로킹(non-blocking) 블로킹과 논블로킹은 A 함수가 B 함수를 호출했을 때, 제어권을 어떻게 처리하느냐에 따라 달라진다. 1) 블로킹 블로킹은 A 함수가 B 함수를 호출하면, 제어권을 A가 호출한 B 함수에 넘겨준다. A함수가 B함수를 호출하면 B에게 제어권을 넘긴다. 제어권을 넘겨받은 B는 열심히 함수를 실행한다. A는 B에게 제어권을 넘겨주었기 때문에 함수 실행을 잠시 멈춘다. B함수는 실행이 끝나면 자신을 호출한 A에게 제어권을 돌려준다. 2) 논블로킹 논블로킹은 A함수가 B함수를 호출해도 제어권은 그대로 자신이 가지고 있는다. A함수가 B함수를 호출하면, B 함수는 실행되지만, 제어권은 A 함수가 그대로 가지고 있는다. A함수는 계속 제어권을 가지고 있기.. 2022. 1. 4.
ramdaJs (FP) (예정) https://www.educative.io/courses/functional-programming-patterns-with-ramdajs/YQV9QG6gqz9 2021. 11. 25.
js 버전별 추가된 기능 정렬es10 ~es2021 까지 ES10 Object.fromEntries Object.entries의 반대 기능입니다. Object.entries가 객체를 2차원 배열로 만들었다면, fromEntries는 다시 2차원 배열을 객체로 만들어줍니다. 배열 말고 Map같은 것도 지원합니다. Object.entries({ a: 'zerocho', b: ['hello'] }); // [['a', 'zerocho'], ['b', ['hello']]] Object.fromEntries([['a', 'zerocho'], ['b', ['hello']]]); // { a: 'zerocho', b: ['hello'] } Array.prototype.flat, Array.prototype.flatMap Array.prototype.flat 다중 배열을 펼.. 2021. 7. 31.