본문 바로가기

전체 글352

[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 - Illustrating Lexical Scope 요약 Chapter 2: Illustrating Lexical Scope 챕터1에서는 스코프가 어떻게 코드 컴파일중에 결정되는지 알아보았다. 이 모델을 렉시컬 스코프라 칭하였음. 이번 장에서는 다양한 방식으로 스코프를 설명하고 프로그램을 더 정확하게 이해할 수 있도록 하는 것이 목표다. Marbles, and Buckets, and Bubbles... Oh My! // outer/global scope: RED var students = [ { id: 14, name: "Kyle" }, { id: 73, name: "Suzy" }, { id: 112, name: "Frank" }, { id: 6, name: "Sarah" } ]; function getStudentName(studentID) { // f.. 2023. 5. 8.
[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.
반응형