Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


A book series on JavaScript. @YDKJS on twitter.

Subscribe to updates I use You-Dont-Know-JS

Statistics on You-Dont-Know-JS

Number of watchers on Github 77324
Number of open issues 183
Average time to close an issue 4 days
Main language JavaScript
Average time to merge a PR 1 day
Open pull requests 113+
Closed pull requests 133+
Last commit almost 2 years ago
Repo Created about 6 years ago
Repo Last Updated over 1 year ago
Size 7.08 MB
Homepage http://www.kickst...
Organization / Authorgetify
Page Updated
Do you use You-Dont-Know-JS? Leave a review!
View open issues (183)
View You-Dont-Know-JS activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating You-Dont-Know-JS for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

You Don't Know JS (book series)

This is a series of books diving deep into the core mechanisms of the JavaScript language. The first edition of the series is now complete.


Please feel free to contribute to the quality of this content by submitting PR's for improvements to code snippets, explanations, etc. While typo fixes are welcomed, they will likely be caught through normal editing processes, and are thus not necessarily as important for this repository.

To read more about the motivations and perspective behind this book series, check out the Preface.



These books are being released here as drafts, free to read, but are also being edited, produced, and published through O'Reilly.

If you like the content you find here, and want to support more content like it, please purchase the books once they are available for sale, through your normal book sources. :)

If you'd like to contribute financially towards the effort (or any of my other OSS work) aside from purchasing the books, I do have a patreon that I would always appreciate your generosity towards.


In-person Training

The content for these books derives heavily from a series of training materials I teach professionally (in both public and private-corporate workshop format): Deep JavaScript Foundations, Rethinking Async, and ES6: The Right Parts workshops.

If you like this content and would like to contact me regarding conducting training on these, or other various JS/HTML5/node.js topics, please reach out to me through email: getify @ gmail

Online Video Training

I also have some JS training material available in on-demand video format. I teach courses through Frontend Masters, like my Deep JavaScript Foundations workshop. You can find all my courses here.

Some of those courses are also distributed on other platforms, like Pluralsight,, and O'Reilly Safari Online.


Any contributions you make to this effort are of course greatly appreciated.

But PLEASE read the Contributions Guidelines carefully before submitting a PR.

License & Copyright

The materials herein are all (c) 2013-2017 Kyle Simpson.

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 4.0 Unported License.

You-Dont-Know-JS open issues Ask a question     (View All Issues)
  • about 3 years You Don't Know JS: Async & Performance Chapter 4: Generators Thunks
  • about 3 years async & performance || 9/21
  • about 3 years Types & Grammer - Chapter 2 - Small Decimal Values
  • about 3 years this & prototypes, chapter 5 #Setting & Shadowing Properties
  • about 3 years Up & Going Chapter 1: small typo in Constants example code
  • about 3 years Up & going equality 3 simple rules
  • about 3 years ES6 & Beyond: figure out default function closure over params/body-vars
  • about 3 years ES6 & Beyond: default params have `this`, `arguments`, etc
  • about 3 years ES6 & Beyond: default params truncate function length
  • over 3 years Types & Grammar Ch 3 - RegExp.prototype is an object as of ES6
  • over 3 years Up & Going - Chapter 2 - Values & Types: Should "function" be included in the summary list of types?
  • over 3 years ECMAScript editors: JS classes are not fake
  • over 3 years This & prototype inheritance - Chapter 1 - Grammar issue
  • over 3 years es6 & beyond: ch2, fix inline code snippet to be less confusing
  • over 3 years "ES6 & Beyond", ch4, section "Review" - possible typo
  • over 3 years "ES6 & Beyond", ch3, section "Modules -> Moving forward" - unclear sentence
  • over 3 years "async & performance" and "es6 & beyond": update "TCO"
  • over 3 years `.constructor` not restored in Chapter 5 : "(Prototypal) Inheritance"
  • over 3 years "this & obj prototypes " - ch 4 : Suggestion. comments in code snippets to improve clarity
  • almost 4 years "types & grammar": Pre-ES6 Number.isSafeInteger(..) polyfill - Number.MAX_SAFE_INTEGER is also introduced ES6
  • almost 4 years 'Scopes & Closures': Appendix C - discussion of this using fat arrow
  • almost 4 years "es6 & beyond": regex clarification
  • almost 4 years "up & going": Chapter 2: introducing the concept of methods
  • almost 4 years Async & Performance - ch2 - Timeoutify callback arguments
  • almost 4 years "this & Object Prototypes" - ch6 Behavior Delegation - Minor grammatical error
  • almost 4 years Tilde is one's complement
  • about 4 years "Scope & Closures"- Ch.3 Function Versus Block Scope
  • about 4 years Async & Performance - ch6 - Calculation error
  • about 4 years es6 & beyond: ch8, remove `Object.observe(..)`
  • about 4 years Async & Performance - Ch1 - process.nextTick()
You-Dont-Know-JS open pull requests (View All Pulls)
  • Fix some "recursion" steps.
  • Add: note about type names
  • update zalgo link
  • Fix typo Async & Perf - Ch6 - Context Is King
  • Update
  • Remove broken link
  • ACCESSORY_PRICE conditional logic leads to overdraft
  • Update to -- more colorful analogy
  • fixed typo
  • Fix 'writable: false' to 'writable: true'
  • Edits preface to be more concise and precise - less long sentences, f…
  • Combine duplicate mentions of jsperf setup/teardown code
  • Fix various errata in Async & Performance Ch. 4: Generators
  • Fixed onlyOne() not working as intended
  • Update
  • Update
  • Update to reflect ES2015 (ES6)
  • Updated comments to reflect side-effect
  • Replace 'arguments array' with 'arguments object'
  • fix: missing invoke in "Scope & Closures" -
  • "async & performance" - ch 3 - typo in "Thenable Duck Typing"
  • Fixing issues with custom Object.observe listing
  • I suggest the following edit on line 455
  • -- fixing missing "a"
  • fix issue: 747
  • Update
  • Fix expected result
  • Fix spelling on the word "descendent"
  • Fix typo in of "ES6 & Beyond"
  • Fixing a typo mentioned in issue #734
  • Update small typo
  • variable values corrected in comments
  • Fixed description of typed array constructor
  • Add script to generate TLDR
  • Placed links at the bottom of each chapter to the next
  • Update link for Traceur
  • Easily movable table of contents to up&going
  • Update module names for consistency: foo -> A, bar -> B
  • Neither does there exist isPrototype...
  • An uncaught TypeError will be thrown
  • clarify which snippet is which
  • No need for [Symbol.iterator]() { return this; }, here ?
  • Added relative links as footer between chapters/books
  • Keep up to date with ES spec "types & grammar" ch1.mod
  • Added links to TOC
  • add the function type to typeof examples
  • Update
  • Chinese translation of YDKJS
  • Difference in Node environment
  • Fun to comments
  • Edit Google Traceur url
  • Addition of short description of DELETE operator
  • typo: without lack of --> with lack of
  • Update
  • To many parenthesis
  • chore: update license years
  • Correct command output
  • Typo
  • 1edBranchCn
  • Update short circuit && example to be more practical
  • Clarification on the const definition
  • fix wrong written
  • Fix typo in first paragraph
  • Added new truthy example
  • Typo in ch2: prinicple --> principle
  • remove unnecessary indents
  • Update variable names in "Promise Value" section.
  • Update
  • Fix typos
  • Update
  • The full preciseness
  • Merge pull request #1 from getify/master
  • Update
  • Update
  • Invoke foo() in example code.
  • Update
  • Declare vs Define
  • typo
  • modify isSaftInteger polyfill
  • fix typo, chapter 3, line 1486
  • dose not work
  • add-logical-operator-not
  • [Fix] annotation fixed
  • Update non-readonly property descriptor value to `writeable:true`
  • Added site reference for null type
  • Avoid use of "obviously" in Types & Grammar intro
  • fix typos and change translation
  • Fix formatting for poem
  • Small fix on implicit relation between Strong and Static typing
  • Add missing spaces in statement 'var i=0'
  • this & object prototypes ( Fixed output comment
  • Cheat Sheet File
  • Updated Google Tracer tool link since former was deprecated/broken
  • I think the result is this
  • Update
  • Fix minor grammar issues in chapter 3 of Async & Performance
  • punctuation typo in types & grammar ch2
  • fix grammar in "this & object prototypes" chap. 4
  • Update
  • Update for (Section - Multiple Views)
  • .includes() has been included with ES7
  • Fixed Function.prototype.bind polyfill
  • Rephrase note about 'promisory'
  • Fix typos
  • Update
  • IE has limited ES6 functionality
  • Update the 'Become a Patron' badge
  • Changed folder names to be displayed in the same order as the books
  • studying pull, fork , don't mind me.
  • Fix broken links
  • Update the link to google Traceur.
  • Update
  • Update
You-Dont-Know-JS list of languages used
Other projects in JavaScript