본문 바로가기

Development46

[21.01.06] YDKJSY - The Scope Chain "Lookup" Is (Mostly) Conceptual lookup (검색) : 변수의 런타임 접근으로써, JS 엔진은 변수가 위치한 스코프에서 출발해 참고하고자 하는 변수가 존재할 때까지 상단 / 외부 스코프로 올라간다. 검색을 중지하는 조건은 매칭되는 변수를 찾았거나, 전역 스코프에 도달하거나 둘 중 하나이다. 하지만 위의 예시는 개념적인 이해를 돕기 위한 설명일 뿐이지, 실제로 작동하는 방식은 아니다. 각 스코프는 초기 컴파일 동안 대개 결정된다. 왜냐하면 렉시컬 스코프는 이미 이 시점에서 완료되고, 변수는 실행 시점에서 발생하는 어떤 것에도 영향을 받지 않기 때문이다. 이러한 정보들은 컴파일 동안 결정되기에 AST 단계의 내부 변수에 저장된다. 그리고 프로그램을 실행하는 명령들에 의해 사용된다... 2024. 1. 7.
[21.01.02] YDKJSY - What's the Scope? Compiled vs Interpreted 컴파일 방식과 인터프리팅 방식은 기계가 이해할 수 있는 코드로 치환한다는 점에서 대체적으로 유사하다. 하지만 모든 코드가 한번에 변형되는 컴파일 방식과는 달리, 인터프리팅 언어는 한 줄 씩 코드를 읽고 적절한 변형을 거친다. 하지만 그렇다고 JS 엔진의 작동 방식이 딱 이거다, 라고 할 수 없는 이유가 현대의 JS 엔진은 컴파일과 인터프리팅의 방식을 각 단계마다 적절히 변형하고 사용하기 때문이다. 그래서 저자는 JS를 컴파일 방식에 조금 더 가까운 언어라고 묘사하고 있다. Compiling Code 챕터의 서두에서 전에 언급한 주제를 다시 꺼낸 것은 이번에 다룰 스코프가 이 컴파일 단계와 밀접하게 관련된다는 점에 있다. 컴파일러 이론에 따르면, 컴파일로 진행되는.. 2024. 1. 7.
[20.12.28] YDKJSY - The Bigger Picture Pillar 1: Scope and Closure 스코프는 서로 중첩을 이루는데, 스코프 안에서는 변수 사용에 대한 룰이 있다. 하나의 스코프 영역에서는, 자신(스코프)의 영역에 선언한 변수와 상위 혹은 외부 스코프의 변수들에 참조할 수 있다. 하위 혹은 내부 스코프의 변수에는 참조할 수 없다. 이러한 특징을 lexical scope 라고 한다. 그리고 스코프 단위는 프로그램이 파싱 될 때 결정된다. 하지만 해당 특징을 가지는 대부분의 언어에 비해 몇 가지 다른 점이 있어서 lexical 적인 특성이 받아들여지지 않기도 하는데 그것은 다음과 같다. 호이스팅 var 키워드로 선언된 변수 : function 단위로 스코프를 가진다. 하지만 이런 점은 그저 JS 언어의 특성 상 몇가지 독특한 부분이기 때문에 .. 2024. 1. 7.
[20.12.27] YDKJSY - Digging to the Roots of JS Iteration for..of 구문 var object = /* .. */; for (const value of object) { console.log(value); } //value 1.. //value 2.. spread operator const arr = [1,2,3,4]; const arrCopy = [...arr]; console.log(arrCopy); // [1,2,3,4] console.log(arr === arrCopy); //false Iterables Iterable : 해당 값 안에 있는 원소들을 반복 순회 시킬 수 있는 값. ES6 에서 명시한 iterable 한 자료 구조 : String, Array, Map, Set etc. spread operator 를 통해 문자열을 스.. 2024. 1. 7.