Categories
Bibliography JavaScript Software Engineering

You Don’t Know JS Yet: Scope & Closures (YDKJSY JavaScript Book 2) by Kyle Simpson, 2020

See also: JavaScript, You Don’t Know JS Yet (YDKJSY) JavaScript Book Series by Kyle Simpson, JavaScript Bibliography and Bibliography of JavaScript Libraries and Web Frameworks

You Don’t Know JS Yet: Scope & Closures (YDKJSY), JavaScript Book 2, 2nd edition, by Kyle Simpson, 2020, B086GD45ZG (YDKJSY-2)

Fair Use Source: B086GD45ZG (YDKJSY-2)

Buy here https://leanpub.com/ydkjsy-scope-closures (https://leanpub.com/p/getipub) rather than Kyle’s Amazon page or his Amazon 2nd edition book series page.

About This Book:

Are you looking for a better way to deeply learn the fundamentals of JavaScript? Look no further!

The foundation of all programs is the organization of its variables and functions into different nested scopes. Yet, most developers haven’t deeply contemplated how and why these decisions are made and the impacts on code maintainability.

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.

“Scope & Closures” examines all aspects of lexical scope, then builds on these principles to leverage the power of closure, and finally digs into the module pattern for better program structure.

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

About the Author:

Kyle Simpson is an Open Web evangelist from Austin, Texas, who’s passionate about all things JavaScript. He’s an author, workshop trainer, tech speaker, and OSS contributor/leader. https://github.com/getify, https://linkedin.com/in/getify

Kyle Simpson

Book Details:

  • ASIN: B08634PZ3N and B086GD45ZG
  • ISBN: 978-1-64786-226-8
  • Publisher: GetiPub & Leanpub; 2nd edition (March 17, 2020) – Published by GetiPub (http://getipub.com), a division of Getify Solutions, Inc., and produced by Leanpub (https://leanpub.com/p/getipub).
  • Publication date: March 17, 2020
  • Print length: 246 pages

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
  • Notes

Dedication:

I must first thank my wife and kids, whose constant support is what allows me to keep going. I also want to thank the 500 original backers of the Kickstarter for “You Don’t Know JS” (1st ed), as well as the hundreds of thousands of folks who bought and read those books since. Without your financial support, this second edition wouldn’t be happening. Thanks also to the interviewer at a certain avian social media company who said I didn’t “know enough about JS”… you helped me name the series.

Next, I owe much of my current career path to Marc Grabanski and Frontend Masters. Marc took a chance on me and gave me my first shot at teaching years ago, and I wouldn’t have then become a writer had it not been for that! Frontend Masters is the Premier Sponsor of YDKJSY 2nd Edition. Thank you, Frontend Masters (and Marc).

Lastly, my editor, Simon St.Laurent, who helped me conceive the original YDKJS and was my first book editor. Simon’s support and guidance have profoundly impacted me and been an integral part of shaping me into the writer I am today. From those drinks we enjoyed at the Driskill all those years back, where YDKJS was born, through today, thank you so much Simon for shepherding and improving these books!

Foreword:

If I look over the books on my bookshelf, I can clearly see which of these titles are well loved. Well loved in this sense meaning they are a little worn. Their binding is broken, their pages are tattered, there might even be a spilled drink smear or two. What’s ironic to me is that the most loved of my books often look the least cared for, though honestly the opposite is true.

Scope and Closures (1st ed.) is one of my most loved books. It’s small, but the binding is coming undone. The pages are worn and dog-eared. It’s a bit rumpled. It’s not a book I’ve read once. I’ve picked it up again and again in the many years since it was originally published.

For me, it’s also been a benchmark for my own personal progression through JavaScript. When I first read it in 2014, I was familiar with the concepts but the depth of my understanding was admittedly not as deep as the thin volume.

Over the years, even though I wasn’t necessarily feeling my own improvement on a day-to-day basis, each one of the concepts became more approachable. I’d smile to myself, realizing how far I’d come with the help of these guides. It became apparent there was an inverse correlation between how well I treated the book and how much I loved it.

When Kyle asked me to write the Foreword for the 2nd edition, I was floored. It’s not often you’re asked to write about a book that’s been so formative for your own understanding and career, Scope and Closures in particular. I remember the day I first understood closures, the first time I used one well. The satisfaction was great, in part because the symmetry of the idea was compelling to me. Before I even picked this book up, I was already enamoured with closures. And yet, there’s a difference between being able to execute code successfully and fully explore the concepts with any depth. This book took my base understanding and drew it out, helped me master it.

This book is deceptively short. It’s helpful that it’s small because it’s dense with useful knowledge. Since it is compact, I’d suggest you give yourself time to absorb each page. Take your time with it. Treat the book with care, and by that I mean, wear it down.

~~

Sarah Drasner

Head of Developer Experience

Netlify

Preface:

Welcome to the 2nd edition of the widely acclaimed You Don’t Know JS (YDKJS) book series: You Don’t Know JS Yet (YDKJSY).

If you’ve read any of the 1st edition books, you can expect a refreshed approach in these new ones, with plenty of updated coverage of what’s changed in JS over the last five years. But what I hope and believe you’ll still get is the same commitment to respecting JS and digging into what really makes it tick.

If this is your first time reading these books, I’m glad you’re here. Prepare for a deep and extensive journey into all the corners of JavaScript.

If you are new to programming or JS, be aware that these books are not intended as a gentle “intro to JavaScript.” This material is, at times, complex and challenging, and goes much deeper than is typical for a first-time learner. You’re welcome here no matter what your background is, but these books are written assuming you’re already comfortable with JS and have at least 6–9 months experience with it.

The Parts:

These books approach JavaScript intentionally opposite of how The Good Parts treats the language. No, that doesn’t mean we’re looking at the bad parts, but rather, exploring all the parts.

You may have been told, or felt yourself, that JS is a deeply flawed language that was poorly designed and inconsistently implemented. Many have asserted that it’s the worst most popular language in the world; that nobody writes JS because they want to, only because they have to given its place at the center of the web. That’s a ridiculous, unhealthy, and wholly condescending claim.

Millions of developers write JavaScript every day, and many of them appreciate and respect the language.

Like any great language, it has its brilliant parts as well as its scars. Even the creator of JavaScript himself, Brendan Eich, laments some of those parts as mistakes. But he’s wrong: they weren’t mistakes at all. JS is what it is today—the world’s most ubiquitous and thus most influential programming language—precisely because of all those parts.

Don’t buy the lie that you should only learn and use a small collection of good parts while avoiding all the bad stuff. Don’t buy the “X is the new Y” snake oil, that some new feature of the language instantly relegates all usage of a previous feature as obsolete and ignorant. Don’t listen when someone says your code isn’t “modern” because it isn’t yet using a stage-0 feature that was only proposed a few weeks ago!

Every part of JS is useful. Some parts are more useful than others. Some parts require you to be more careful and intentional.

I find it absurd to try to be a truly effective JavaScript developer while only using a small sliver of what the language has to offer. Can you imagine a construction worker with a toolbox full of tools, who only uses their hammer and scoffs at the screwdriver or tape measure as inferior? That’s just silly.

My unreserved claim is that you should go about learning all parts of JavaScript, and where appropriate, use them! And if I may be so bold as to suggest: it’s time to discard any JS books that tell you otherwise.

The Title?

So what’s the title of the series all about?

I’m not trying to insult you with criticism about your current lack of knowledge or understanding of JavaScript. I’m not suggesting you can’t or won’t be able to learn JavaScript. I’m not boasting about secret advanced insider wisdom that I and only a select few possess.

Seriously, all those were real reactions to the original series title before folks even read the books. And they’re baseless.

The primary point of the title “You Don’t Know JS Yet” is to point out that most JS developers don’t take the time to really understand how the code that they write works. They know that it works—that it produces a desired outcome. But they either don’t understand exactly how, or worse, they have an inaccurate mental model for the how that falters on closer scrutiny.

I’m presenting a gentle but earnest challenge to you the reader, to set aside the assumptions you have about JS, and approach it with fresh eyes and an invigorated curiosity that leads you to ask why for every line of code you write. Why does it do what it does? Why is one way better or more appropriate than the other half-dozen ways you could have accomplished it? Why do all the “popular kids” say to do X with your code, but it turns out that Y might be a better choice?

I added “Yet” to the title, not only because it’s the second edition, but because ultimately I want these books to challenge you in a hopeful rather than discouraging way.

But let me be clear: I don’t think it’s possible to ever fully know JS. That’s not an achievement to be obtained, but a goal to strive after. You don’t finish knowing everything about JS, you just keep learning more and more as you spend more time with the language. And the deeper you go, the more you revisit what you knew before, and you re-learn it from that more experienced perspective.

I encourage you to adopt a mindset around JavaScript, and indeed all of software development, that you will never fully have mastered it, but that you can and should keep working to get closer to that end, a journey that will stretch for the entirety of your software development career, and beyond.

You can always know JS better than you currently do. That’s what I hope these YDKJSY books represent.

The Mission:

The case doesn’t really need to be made for why developers should take JS seriously—I think it’s already more than proven worthy of first-class status among the world’s programming languages.

But a different, more important case still needs to be made, and these books rise to that challenge.

I’ve taught more than 5,000 developers from teams and companies all over the world, in more than 25 countries on six continents. And what I’ve seen is that far too often, what counts is generally just the result of the program, not how the program is written or how/why it works.

My experience not only as a developer but in teaching many other developers tells me: you will always be more effective in your development work if you more completely understand how your code works than you are solely just getting it to produce a desired outcome.

In other words, good enough to work is not, and should not be, good enough.

All developers regularly struggle with some piece of code not working correctly, and they can’t figure out why. But far too often, JS developers will blame this on the language rather than admitting it’s their own understanding that is falling short. These books serve as both the question and answer: why did it do this, and here’s how to get it to do that instead.

My mission with YDKJSY is to empower every single JS developer to fully own the code they write, to understand it and to write with intention and clarity.

The Path:

Some of you have started reading this book with the goal of completing all six books, back to back.

I would like to caution you to consider changing that plan.

It is not my intention that YDKJSY be read straight through. The material in these books is dense, because JavaScript is powerful, sophisticated, and in parts rather complex. Nobody can really hope to download all this information to their brains in a single pass and retain any significant amount of it. That’s unreasonable, and it’s foolish to try.

My suggestion is you take your time going through YDKJSY. Take one chapter, read it completely through start to finish, and then go back and re-read it section by section. Stop in between each section, and practice the code or ideas from that section. For larger concepts, it probably is a good idea to expect to spend several days digesting, re-reading, practicing, then digesting some more.

You could spend a week or two on each chapter, and a month or two on each book, and a year or more on the whole series, and you would still not be squeezing every ounce of YDKJSY out.

Don’t binge these books; be patient and spread out your reading. Interleave reading with lots of practice on real code in your job or on projects you participate in. Wrestle with the opinions I’ve presented along the way, debate with others, and most of all, disagree with me! Run a study group or book club. Teach mini-workshops at your office. Write blog posts on what you’ve learned. Speak about these topics at local JS meetups.

It’s never my goal to convince you to agree with my opinion, but to encourage you to own and be able to defend your opinions. You can’t get there with an expedient read-through of these books. That’s something that takes a long while to emerge, little by little, as you study and ponder and re-visit.

These books are meant to be a field-guide on your wanderings through JavaScript, from wherever you currently are with the language, to a place of deeper understanding. And the deeper you understand JS, the more questions you will ask and the more you will have to explore! That’s what I find so exciting!

I’m so glad you’re embarking on this journey, and I am so honored you would consider and consult these books along the way. It’s time to start getting to know JS.

Sources:

Fair Use Sources:

License & Copyright:

© 2013-2019 Kyle Simpson. This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 4.0 Unported License.

Categories
Bibliography JavaScript Software Engineering

You Don’t Know JS Yet: Get Started (YDKJSY JavaScript Book 1) by Kyle Simpson, 2020

See also: JavaScript, You Don’t Know JS Yet (YDKJSY) JavaScript Book Series by Kyle Simpson, JavaScript Bibliography and Bibliography of JavaScript Libraries and Web Frameworks

See: You Don’t Know JS Yet: Get Started (YDKJSY), JavaScript Book 1, 2nd edition, by Kyle Simpson, 2020, B084BNMN7T (YDKJSY-1)

The old version is You Don’t Know JS: Up & Going, (YDKJSY), JavaScript Book 1, 1st edition, by Kyle Simpson, 2015.

Fair Use Source: B084BNMN7T (YDKJSY-1)

Read it free here: https://github.com/getify/You-Dont-Know-JS/tree/1st-ed/up%20%26%20going

Buy here: https://leanpub.com/ydkjsy-get-started (https://leanpub.com/p/getipub) rather than Kyle’s Amazon page or his Amazon 2nd edition book series page.

About This Book:

It seems like there’s never been as much widespread desire before for a better way to deeply learn the fundamentals of JavaScript. But with a million blogs, books, and videos out there, just where do you START? Look no further! 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.” Get Started” prepares you for the journey ahead, first surveying the language then detailing how the rest of the You Don’t Know JS Yet book series guides you to knowing JS more deeply.

In Get Started, you’ll explore:

  • How the JS language evolves, how JS programs actually work, and busting of common myths
  • The building blocks of JS: values, functions, and more
  • The roots and pillars of JS: types, closure, and prototypes

About the Author:

Kyle Simpson is an Open Web evangelist from Austin, Texas, who’s passionate about all things JavaScript. He’s an author, workshop trainer, tech speaker, and OSS contributor/leader. https://github.com/getify, https://linkedin.com/in/getify

Kyle Simpson

Book Details:

  • ASIN: B084BNMN7T
  • ISBN-13: 979-8602477429 and 978-1-64786-220-6
  • Publisher: GetiPub & Leanpub; 2nd edition (January 28, 2020) – Published by GetiPub (http://getipub.com), a division of Getify Solutions, Inc., and produced by Leanpub (https://leanpub.com/p/getipub).
  • Publication date: January 28, 2020
  • Print length: 126 pages

Table of Contents:

  • Foreword
  • Preface
    • The Parts
    • The Title?
    • The Mission
    • The Path
  • Chapter 1: What Is JavaScript?
    • About This Book
    • What’s With That Name?
    • Language Specification
    • Many Faces
    • Backwards & Forwards
    • What’s in an Interpretation?
    • Strictly Speaking
    • Defined
  • Chapter 2: Surveying JS
    • Each File is a Program
    • Values
    • Declaring and Using Variables
    • Functions
    • Comparisons
    • How We Organize in JS
    • The Rabbit Hole Deepens
  • Chapter 3: Digging to the Roots of JS
    • Iteration
    • Closure
    • this Keyword
    • Prototypes
    • Asking “Why?”
  • Chapter 4: The Bigger Picture
    • Pillar 1: Scope and Closure
    • Pillar 2: Prototypes
    • Pillar 3: Types and Coercion
    • With the Grain
    • In Order
  • Appendix A: Exploring Further
    • Values vs. References
    • So Many Function Forms
    • Coercive Conditional Comparison
    • Prototypal “Classes”
  • Appendix B: Practice, Practice, Practice!
    • Practicing Comparisons
    • Practicing Closure
    • Practicing Prototypes
    • Suggested Solutions
  • Notes

Dedication:

I must first thank my wife and kids, whose constant support is what allows me to keep going. I also want to thank the 500 original backers of the Kickstarter for “You Don’t Know JS” (1st ed), as well as the hundreds of thousands of folks who bought and read those books since. Without your financial support, this second edition wouldn’t be happening. Thanks also to the interviewer at a certain avian social media company who said I didn’t “know enough about JS”… you helped me name the series.

Next, I owe much of my current career path to Marc Grabanski and Frontend Masters. Marc took a chance on me and gave me my first shot at teaching years ago, and I wouldn’t have then become a writer had it not been for that! Frontend Masters is the Premier Sponsor of YDKJSY 2nd Edition. Thank you, Frontend Masters (and Marc).

Lastly, my editor, Simon St.Laurent, who helped me conceive the original YDKJS and was my first book editor. Simon’s support and guidance have profoundly impacted me and been an integral part of shaping me into the writer I am today. From those drinks we enjoyed at the Driskill all those years back, where YDKJS was born, through today, thank you so much Simon for shepherding and improving these books!

Foreword

The first time I saw a tweet advertising the crowdfunding campaign for the original book series You Don’t Know JS, I thought to myself that whoever the hell this Kyle Simpson is can get bent. Of course I know JavaScript! At the time I had been working in JavaScript for many years with some of tech’s biggest names, so I felt justified in looking down my nose at this sweeping claim.

Once the funding for the book completed, I observed that a lot of people were really excited to read this book series and I decided to go ahead and give it a shot—you know, just to show everyone that I do know JavaScript. Once I dug in and poured over the texts, I experienced a profound mix of learning, surprise, and even a little anger. Kyle has a knack for saying something that challenges my world view and making me think about it until I realize what he said was actually true (I’ll never admit this to him though!).

So it turned out I didn’t know JavaScript. I didn’t know why I had adopted certain patterns; I didn’t know why JavaScript behaves the way it does in certain situations, and I didn’t know much of the nuance of the languages that I assumed I did. Many were things I didn’t know I didn’t know, and I was worse off as a developer for it.

This is what this book series is great for. It’s not just for someone picking up the language for the first time (though it’s for them, too); it’s for all software craftspeople who want to master their tools, who want to understand the ins and outs of their trade, and who want to select the proper methods for solving problems.

The thing I appreciate about Kyle and his work is that he is delightfully uninfluenced by the zeitgeist of the programming world around him. That isn’t to say he isn’t aware of what’s happening in the community but rather that it doesn’t sway his pursuit of the best answers to the correct questions. This often has put him at odds with the latest “best practices,” but in reality this is exactly what you need: a perspective removed from temporal influence and simply speaking to the underlying truth. That’s why this series is so good. The first edition of You Don’t Know JS is still accurate, years later! Not many things stand this test of time given the shifting sands of the JavaScript landscape.

Let’s talk a moment about this first book itself, Get Started. You may be tempted to skip it as you may think that you already have “gotten started,” but it’s worth reading this one! You’d be surprised how much depth, nuance, and oddity there is in the underlying building blocks of JavaScript, and it’s quite essential for you to grapple with these underpinnings before venturing forward into the constructs of the language. It’s exactly the sort of foundation you need, to really know JavaScript.

So, do your future self a favor and dig into this book and unlock the knowledge within. These solid foundations will serve you better than any framework ever will; those come and go but we’ll still be writing JavaScript itself for decades to come. Keep an open mind and challenge your preconceived notions.

Because, as I found out myself, you probably don’t know JavaScript (yet).

~~

Brian Holt

Senior Program Manager

Visual Studio Code and Node.js on Azure

Microsoft

Preface

Welcome to the 2nd edition of the widely acclaimed You Don’t Know JS (YDKJS) book series: You Don’t Know JS Yet (YDKJSY).

If you’ve read any of the 1st edition books, you can expect a refreshed approach in these new ones, with plenty of updated coverage of what’s changed in JS over the last five years. But what I hope and believe you’ll still get is the same commitment to respecting JS and digging into what really makes it tick.

If this is your first time reading these books, I’m glad you’re here. Prepare for a deep and extensive journey into all the corners of JavaScript.

If you are new to programming or JS, be aware that these books are not intended as a gentle “intro to JavaScript.” This material is, at times, complex and challenging, and goes much deeper than is typical for a first-time learner. You’re welcome here no matter what your background is, but these books are written assuming you’re already comfortable with JS and have at least 6–9 months experience with it.

The Parts

These books approach JavaScript intentionally opposite of how The Good Parts treats the language. No, that doesn’t mean we’re looking at the bad parts, but rather, exploring all the parts.

You may have been told, or felt yourself, that JS is a deeply flawed language that was poorly designed and inconsistently implemented. Many have asserted that it’s the worst most popular language in the world; that nobody writes JS because they want to, only because they have to given its place at the center of the web. That’s a ridiculous, unhealthy, and wholly condescending claim.

Millions of developers write JavaScript every day, and many of them appreciate and respect the language.

Like any great language, it has its brilliant parts as well as its scars. Even the creator of JavaScript himself, Brendan Eich, laments some of those parts as mistakes. But he’s wrong: they weren’t mistakes at all. JS is what it is today—the world’s most ubiquitous and thus most influential programming language—precisely because of all those parts.

Don’t buy the lie that you should only learn and use a small collection of good parts while avoiding all the bad stuff. Don’t buy the “X is the new Y” snake oil, that some new feature of the language instantly relegates all usage of a previous feature as obsolete and ignorant. Don’t listen when someone says your code isn’t “modern” because it isn’t yet using a stage-0 feature that was only proposed a few weeks ago!

Every part of JS is useful. Some parts are more useful than others. Some parts require you to be more careful and intentional.

I find it absurd to try to be a truly effective JavaScript developer while only using a small sliver of what the language has to offer. Can you imagine a construction worker with a toolbox full of tools, who only uses their hammer and scoffs at the screwdriver or tape measure as inferior? That’s just silly.

My unreserved claim is that you should go about learning all parts of JavaScript, and where appropriate, use them! And if I may be so bold as to suggest: it’s time to discard any JS books that tell you otherwise.

The Title?

So what’s the title of the series all about?

I’m not trying to insult you with criticism about your current lack of knowledge or understanding of JavaScript. I’m not suggesting you can’t or won’t be able to learn JavaScript. I’m not boasting about secret advanced insider wisdom that I and only a select few possess.

Seriously, all those were real reactions to the original series title before folks even read the books. And they’re baseless.

The primary point of the title “You Don’t Know JS Yet” is to point out that most JS developers don’t take the time to really understand how the code that they write works. They know that it works—that it produces a desired outcome. But they either don’t understand exactly how, or worse, they have an inaccurate mental model for the how that falters on closer scrutiny.

I’m presenting a gentle but earnest challenge to you the reader, to set aside the assumptions you have about JS, and approach it with fresh eyes and an invigorated curiosity that leads you to ask why for every line of code you write. Why does it do what it does? Why is one way better or more appropriate than the other half-dozen ways you could have accomplished it? Why do all the “popular kids” say to do X with your code, but it turns out that Y might be a better choice?

I added “Yet” to the title, not only because it’s the second edition, but because ultimately I want these books to challenge you in a hopeful rather than discouraging way.

But let me be clear: I don’t think it’s possible to ever fully know JS. That’s not an achievement to be obtained, but a goal to strive after. You don’t finish knowing everything about JS, you just keep learning more and more as you spend more time with the language. And the deeper you go, the more you revisit what you knew before, and you re-learn it from that more experienced perspective.

I encourage you to adopt a mindset around JavaScript, and indeed all of software development, that you will never fully have mastered it, but that you can and should keep working to get closer to that end, a journey that will stretch for the entirety of your software development career, and beyond.

You can always know JS better than you currently do. That’s what I hope these YDKJSY books represent.

The Mission

The case doesn’t really need to be made for why developers should take JS seriously—I think it’s already more than proven worthy of first-class status among the world’s programming languages.

But a different, more important case still needs to be made, and these books rise to that challenge.

I’ve taught more than 5,000 developers from teams and companies all over the world, in more than 25 countries on six continents. And what I’ve seen is that far too often, what counts is generally just the result of the program, not how the program is written or how/why it works.

My experience not only as a developer but in teaching many other developers tells me: you will always be more effective in your development work if you more completely understand how your code works than you are solely just getting it to produce a desired outcome.

In other words, good enough to work is not, and should not be, good enough.

All developers regularly struggle with some piece of code not working correctly, and they can’t figure out why. But far too often, JS developers will blame this on the language rather than admitting it’s their own understanding that is falling short. These books serve as both the question and answer: why did it do this, and here’s how to get it to do that instead.

My mission with YDKJSY is to empower every single JS developer to fully own the code they write, to understand it and to write with intention and clarity.

The Path

Some of you have started reading this book with the goal of completing all six books, back to back.

I would like to caution you to consider changing that plan.

It is not my intention that YDKJSY be read straight through. The material in these books is dense, because JavaScript is powerful, sophisticated, and in parts rather complex. Nobody can really hope to download all this information to their brains in a single pass and retain any significant amount of it. That’s unreasonable, and it’s foolish to try.

My suggestion is you take your time going through YDKJSY. Take one chapter, read it completely through start to finish, and then go back and re-read it section by section. Stop in between each section, and practice the code or ideas from that section. For larger concepts, it probably is a good idea to expect to spend several days digesting, re-reading, practicing, then digesting some more.

You could spend a week or two on each chapter, and a month or two on each book, and a year or more on the whole series, and you would still not be squeezing every ounce of YDKJSY out.

Don’t binge these books; be patient and spread out your reading. Interleave reading with lots of practice on real code in your job or on projects you participate in. Wrestle with the opinions I’ve presented along the way, debate with others, and most of all, disagree with me! Run a study group or book club. Teach mini-workshops at your office. Write blog posts on what you’ve learned. Speak about these topics at local JS meetups.

It’s never my goal to convince you to agree with my opinion, but to encourage you to own and be able to defend your opinions. You can’t get there with an expedient read-through of these books. That’s something that takes a long while to emerge, little by little, as you study and ponder and re-visit.

These books are meant to be a field-guide on your wanderings through JavaScript, from wherever you currently are with the language, to a place of deeper understanding. And the deeper you understand JS, the more questions you will ask and the more you will have to explore! That’s what I find so exciting!

I’m so glad you’re embarking on this journey, and I am so honored you would consider and consult these books along the way. It’s time to start getting to know JS.

Sources:

Fair Use Sources:

License & Copyright:

© 2013-2019 Kyle Simpson. This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 4.0 Unported License.