본문 바로가기

YDKJ18

[YDKJ] Scope & Closures - Around the Global Scope 요약 Chapter 4: Around the Global Scope 챕터3 에서는 전역 스코프를 주로 언급했으나, 왜 전역 스코프를 사용하면 안되는지, 언제 유용한지에 대해 언급하지 않았음 챕터4에서는 이를 중점으로 볼 것. Why Global Scope? 대부분의 애플리케이션은 여러개의 개별 js파일로 구성되는 것이 일반적임 => 그렇다면 js엔진은 어떻게 이러한 분리된 파일을 하나의 런타임 컨텍스트로 관리할까? 브라우저에서 실행되는 어플리케이션의 경우 크게 3가지가 있음. 1. es모듈을 직접 사용한다면, JS환경에서 각 모듈이 개별적으로 로드 됨. 그 후, 각 모듈이 필요한 모듈이 있을 때, 참조로 가져옴.(공유된 스코프 없이 import를 통해 협력) 2. 빌드 프로세스에서 번들러를 사용한다면, .. 2023. 5. 18.
[YDKJ] Scope & Closures - The Scope Chain 요약 Chapter 3: The Scope Chain 중첩된 스코프에서 연결된 스코프들을 스코프 체인이라고함. 체인은 방향성을 가지며 상위/외부 방향으로 탐색을 함. "Lookup" Is (Mostly) Conceptual 일반적으로 변수가 어떤 스코프에서 비롯되었는지는 초기 컴파일링 과정에서 결정됨. 런타임동안에 스코프가 변경되진 않음 => 그러나 런타임때 결정 될 수는 있음.(현재 프로그램에는 선언 안되어 있는데 다른 프로그램 전역 스코프에 있을 때) 챕터2에서는 엔진이 계속해서 스코프체인을 탐색하는 것처럼 말했지만, 사실 이미 정보가 알려져있어서 탐색안함. Shadowing 쉐도잉 => 가리는 것을 의미. var studentName = "Suzy"; function printStudent(stud.. 2023. 5. 9.
[YDKJ] Scope & Closures - What's the Scope? 요약 Chapter 1: What's the Scope? JS에서 변수를 구성하고 관리하는 매커니즘을 설명하기 위해서는 스코프에 대한 이해가 필요하다. 이 책에서는 scope가 작동하는 방식, 유용성, 피해야 할 함정을 살펴볼 것. Compiled vs. Interpreted 컴파일은 일반적으로 소스 코드가 한번에 변환되어 나중에 실행될 수 있는 파일로 저장됨. 인터프리터는 컴파일러와 유사하게 프로그램을 기계가 이해할 수 있는 명령어로 변환함. 그러나 처리모델은 다르고 소스코드가 한 줄씩 변환됨. Compiling Code 스코프는 주로 컴파일 중에 결정 됨. 따라서 컴파일과 실행을 이해하는 것이 스코프와 큰 관련이 있다. 컴파일러 이론에서 프로그램은 세가지 기본 단계로 처리됨. 1. Tokenizing.. 2023. 5. 2.
[YDKJ] Get Started - Appendix B 요약 Practicing Comparisons scheduleMeeting(..) 함수는 시작 시간 (24 시간 형식의 문자열 "hh:mm")과 미팅 기간 (분 단위)을 받습니다. dayStart 및 dayEnd에서 지정된 시간에 따라 미팅이 전적으로 업무 일정 내에 있는 경우 true를 반환하고 업무 일정 범위를 위반하는 경우 false를 반환합니다. 내코드 const dayStart = "07:30"; const dayEnd = " 17:45"; const [sh, sm] = dayStart.split(":"); const [eh, em] = dayEnd.split(":"); let startSum = parseInt(sh) * 60 + parseInt(sm); let endSum = parseInt.. 2023. 4. 30.
[YDKJ] Get Started - Appendix A 요약 Values vs. References JS에서 원시값은 값복사, 객체는 주소 복사 ! So Many Function Forms 익명함수 vs 이름 있는 함수 => 익명함수는 이름을 추론한다. var awesomeFunction = function(coolThings) { // .. return amazingStuff; }; awesomeFunction.name; // "awesomeFunction" // let awesomeFunction = .. // const awesomeFunction = .. var awesomeFunction = function someName(coolThings) { // .. return amazingStuff; }; awesomeFunction.name; // "s.. 2023. 4. 27.
[YDKJ] Get Started - Chapter 4 - 1 요약 Chapter 4: The Bigger Picture 이번 4장에서는 JS언어의 구성을 세가지 주요 기둥으로 나눌것이다. 부록에 있는 연습을 건너뛰지 마라!! Pillar 1: Scope and Closure 변수를 스코프단위로 구성하는 것은 모든 언어에서 가장 기초적인 특성 JS는 호이스팅 때문에, 선언된 모든 변수는 스코프의 시작부분에서 선언된 것처럼 처리됨. let/const는 TDZ를 통해 실제로 사용할 수 없는 구간을 만듬. 함수가 외부 스코프의 변수를 참조하고, 스코프 변수에 대한 엑세스를 유지하는 것. => 클로저 자세한건 다음 책에서... Pillar 2: Prototypes 객체를 사용하는 유일한 방법은 클래스가 아니다. Pillar 3: Types and Coercion JS의 값.. 2023. 4. 26.
반응형