The worldwide best selling You Don't Know JS book series is back for a 2nd edition: You Don't Know JS Yet. All 6 books are brand new, rewritten to cover all sides of JS for 2020 and beyond. You'll still get in-depth coverage of the core language, applied in useful code organization patterns for your programs. And of course, through Kyle's unique perspective and conversational tone, explore passionate, reasoned debate of the most common questions developers face.
Scope & Closures, the second book in the new edition series, dives deep into how and why to organize variables into different buckets of scope, limiting scope over-exposure and improving code maintainability. On top of lexical scope, closure empowers functions with memory, preserving variables across calls. Modules leverage scope and closures to encapsulate data and behavior.
In Scope & Closures, you'll dig into:
Nesting lexical scopes with functions and blocks, to limit scope exposure of variables
Functions remembering variables through closure
Modules, one of the most important code organization patterns in programming
Author(s): Kyle Simpson
Series: You Don't Know JS Yet
Edition: 2
Publisher: Leanpub
Year: 2020
Language: English
Commentary: True PDF
Pages: 270
Table of Contents
Foreword
Preface
The Parts
The Title?
The Mission
The Path
Chapter 1: What's the Scope?
About This Book
Compiled vs. Interpreted
Compiling Code
Compiler Speak
Cheating: Runtime Scope Modifications
Lexical Scope
Chapter 2: Illustrating Lexical Scope
Marbles, and Buckets, and Bubbles… Oh My!
A Conversation Among Friends
Nested Scope
Continue the Conversation
Chapter 3: The Scope Chain
``Lookup'' Is (Mostly) Conceptual
Shadowing
Function Name Scope
Arrow Functions
Backing Out
Chapter 4: Around the Global Scope
Why Global Scope?
Where Exactly is this Global Scope?
Global This
Globally Aware
Chapter 5: The (Not So) Secret Lifecycle of Variables
When Can I Use a Variable?
Hoisting: Yet Another Metaphor
Re-declaration?
Uninitialized Variables (aka, TDZ)
Finally Initialized
Chapter 6: Limiting Scope Exposure
Least Exposure
Hiding in Plain (Function) Scope
Scoping with Blocks
Function Declarations in Blocks (FiB)
Blocked Over
Chapter 7: Using Closures
See the Closure
The Closure Lifecycle and Garbage Collection (GC)
An Alternative Perspective
Why Closure?
Closer to Closure
Chapter 8: The Module Pattern
Encapsulation and Least Exposure (POLE)
What Is a Module?
Node CommonJS Modules
Modern ES Modules (ESM)
Exit Scope
Appendix A: Exploring Further
Implied Scopes
Anonymous vs. Named Functions
Hoisting: Functions and Variables
The Case for var
What's the Deal with TDZ?
Are Synchronous Callbacks Still Closures?
Classic Module Variations
Appendix B: Practice
Buckets of Marbles
Closure (PART 1)
Closure (PART 2)
Closure (PART 3)
Modules
Suggested Solutions