HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
getify
You-Dont-Know-JS
Web Development2013–2025
getify / You-Dont-Know-JS

You-Dont-Know-JS

A book series (2 published editions) on the JS language.

119Distinct people
133Mentions
5Explicit recommenders
184.8KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A book series (2 published editions) on the JS language.

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

I recommend this book https://github.com/getify/You-Dont-Know-JS It discusses great edge cases of JS while explaining why or how come they are like this where possible.

gls2ro used a recommendation phrase. 5 indexed comments match. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 5:58:02 AM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year133 dated mentions

Observed mentions: 2013-11-20 18:38:59 UTC to 2025-03-17 16:51:17 UTC.

01020302013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments20132014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 8 mentions; 1 submissions, 7 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 9 mentions; 1 submissions, 8 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 23 mentions; 3 submissions, 20 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 35 mentions; 1 submissions, 34 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 13 mentions; 2 submissions, 11 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 8 mentions; 2 submissions, 6 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 17 mentions; 3 submissions, 14 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 7 mentions; 0 submissions, 7 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 4 mentions; 2 submissions, 2 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC110
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC817
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC918
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC23320
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC35134
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC13211
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC826
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC17314
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC707
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC202
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC422
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC505
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC110

What Hacker News says

35 sources
I'm not in a position to be able to recommend beginner tutorials as I've been following along for many years. However, the advice I'd give is to learn the following: Firstly, make sure you're familiar with modern HTML and CSS. This is actually quite important even if you're concentrating on the JS side of things as they are closely related. Secondly, React would be the big framework to learn. It's not too complex if you follow some examples. I wouldn't worry too much about modern JS features to start with but if you do want to brush up then try: https://github.com/getify/You-Dont-Know-JS
In ES6 for beginners, part 3
Understanding 'this' in JavaScript is simply table stakes at this point. You and anyone else who touches your JS code should have a decent grasp on 'this'. Citing "complexity of this" while using React is just absurd in my opinion... You Don't Know JS: this & Object Prototypes cleared it up nicely for me.[0] Love the series in general too. Also -- and I'm not sure how it's typical done when taking a functional approach -- where do these functions "live"? What if we want to use a Person in another module/component/whatever? Do we basically just have a collection of "static" functions on a helper class that we're going to be using? I'm not sure that's a real gain. Would rather see the functions available on the Person itself (though maybe that's just my OOP ways talking). And then there's the "pure function" part. Without explicit documenta
Read the rest
tion and no other knowledge of this individual's functional predilections, I would be surprised when the setName function actually creates an entirely new Person and then sets it name. I don't know. I really do enjoy functional approaches, but I don't think avoiding 'this' is a good reason, and I feel like the example given isn't the best scenario to illustrate. [0] https://github.com/getify/You-Dont-Know-JS/tree/master/this%...
In When I use classes, when I don’t, what I do instead and why
Eloquent Javascript[0] is free and online, it starts of with simple concepts but ramps up very fast. Javascript the Good Parts[1] is very solid, albeit a little more advanced and dry. Probably not a beginner book, but one to read after you've built a couple of medium sized projects. I use it as a reference to brush up on certain topics. You-Dont-Know-JS [2] is a free online book series that is a great reference for brushing up on more advanced topics. MDN Reference [3]: this is the best documentation out there. Always have a tab open and try reading the actual documentation on how things work. This will be very hard at first but will allow you to become a very strong developer. I also recommend you avoid https://www.w3schools.com/. Google often puts W3Schools at the top when searching for what a method does, but often times it is out of d
Read the rest
In Ask HN: Best resources for learning JavaScript in 2017
Eloquent Javascript is probaby a single good resource I'd recommend if you're starting out. http://eloquentjavascript.net/ Other one if you want to go in a little deep: https://github.com/getify/You-Dont-Know-JS Working on side projects or sth will be beneficial after these or along with these. I think Codacademy is pretty basic. Look for a bit more advanced problems. Edit: For some advanced topics or frameworks, frontend masters is a very good resource. https://frontendmasters.com/
In Ask HN: Best resources for learning JavaScript in 2017
I just recently read about this in the You Don't Know JS series of books: "We can be tempted to look at var a = 2; as one statement, but the JavaScript Engine does not see it that way. It sees var a and a = 2 as two separate statements, the first one a compiler-phase task, and the second one an execution-phase task. What this leads to is that all declarations in a scope, regardless of where they appear, are processed first before the code itself is executed. You can visualize this as declarations (variables and functions) being "moved" to the top of their respective scopes, which we call "hoisting". Declarations themselves are hoisted, but assignments, even assignments of function expressions, are not hoisted. Be careful about duplicate declarations, especially mixed between normal var declarations and function declarations -- peril await
Read the rest
In Expressive Writing Cools Brain on Stressful Tasks
Hey there, I'll start with the disclaimer, as lately HN comments have tendency of becoming toxic - everything I write is my personal opinion. With that behind us I can start. I'll try to write this for someone who knows very little about JS, but knows her/his way around basic programming/cs. Firstly I love JavaScript, I have been writing it for 10 years now, but there are bad parts of it as well. Let's start with good stuff * It is evolving in the right direction * You can do a lot of things with it (web apps, games, mobile apps, server...) * Materials for learning are everywhere * It will be easy to find a job Bad stuff * It is moving at crazy to follow pace * There are a lot of different ways of doing same things * As it is very hip thing to do, there is a lot of bu___hit (beware of the hype train) Learn plain javascript before moving t
Read the rest
o frameworks. Focus on ES6 and new stuff as it will make your life way easier. * Someone already mentioned Dr. Axel Rauschmayer, pick any of his books - http://exploringjs.com/ * Another good one is You Dont Know JS - https://github.com/getify/You-Dont-Know-JS Try to make small app on your own. You'll get into all sort of problems, but that's the fun part I guess. That will help you to understand what frameworks are trying to solve. Then you can start learning one of the frameworks. React, Vue, Angular are all solid choices. My pick is React, as I know it best. Apply the same mindset as with learning plain JS. Try to write your own stuff on a small scale before importing huge libraries. Good example is redux, everybody on the internet are screaming that you should always use it, but even Dan Abramov (author of redux) has great read - You might not need redux https://medium.com/@dan_abramov/you-might-not-need-redux-be4... Try handling state yourself, then if you see that you need big guns, try redux. Same goes for any big library or technology. So, buckle up, do it thoroughly and try to find fun in doing javascript. And the most important generic advice - do a real pet project instead of just blindly following tutorials. This will take some time, and if you just want enough knowledge to lend a job, pick a framework, throw yourself into the deep end and swim your way out. This is something I wouldn't recommend but it works for some people. Hope this helps, cheers! S P.S. Random JS talks I like * Wat - Gary Bernhardt, 2012 https://www.destroyallsoftware.com/talks/wat It never fails to crack me up * Live React: Hot Reloading with Time Travel - Dan Abramov, 2015 https://www.youtube.com/watch?v=xsSnOQynTHs Classic nowadays, it is a delight to watch Dan Abramov presenting, only thing missing is a mic drop at the end * What the heck is the event loop anyway? - Philip Roberts, 2014 https://www.youtube.com/watch?v=8aGhZQkoFbQ This is a must watch for every js developer EDIT: Sorry for the formatting, HN doesn't support markdown
In Ask HN: Experienced JavaScript programmers, what are your recommendations?
> If you are a professional developer, you can consider these examples as a great resource for interview questions and quizzes for newcomers in your company No, do not consider these examples as a "great" resource for interview questions. They are nothing more than tricks and hacks abusing the bad aspects of the language and anyone who includes them in an interview has failed in screening JavaScript developers, at least in my book. A JS developer should understand that JavaScript has some flawed, unfixable core concepts and educate themselves on how to avoid them, not use them in actual production code or memorize every coercion scenario. Some simple rules: 1. Always use referential equality checks (triple equal `===`). In idiomatic JS you can also use double equality only when explicitly checking against undefined or null (foo == null).
Read the rest
It's the only use of abstract equality that I find acceptable. 2. Learn how the `this` execution context works. Kyle Simpson explains it very well in YDKJS (https://github.com/getify/You-Dont-Know-JS/blob/master/this%...). There are four simple rules that matter and are straightforward to grasp. 3. Familiarize yourself with how type coercion works in JS but avoid it. The spec is quite easy to follow in this matter and follows very specific, documented rules. e.g.: https://www.ecma-international.org/ecma-262/8.0/index.html#s... https://www.ecma-international.org/ecma-262/8.0/index.html#s... Use strictly as reference. 4. Stop using plain ES5, the language currently is ES2017. ES2015 and beyond provide modern constructs that make most of ES5's weirdness obsolete. For example, never use `var` anymore, `const` and `let` are superior initializers. By following the above rules a JS developer should be fine in 99% of cases, in my experience. Yes, JavaScript will possibly implode on you on the rest 1%, but I'd be hard pressed to find a (similarly popular) language that doesn't. If one finds that to be unacceptable, enabling types via TypeScript or Flow should make their life even easier.
In WTFJS – a list of funny and tricky JavaScript examples

Showing the 15 most recent of 35 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.