Variable hoisting is a lie. The `this` keyword is simple. Learn the real mechanics behind JavaScript's most confusing features.
#1about 3 minutes
The origin and design philosophy of JavaScript
JavaScript was created in 10 days with a core design goal of keeping code running, which explains why early bugs and quirks were never fixed.
#2about 5 minutes
Understanding JavaScript's forgiving nature and its quirks
JavaScript's design prioritizes keeping code running, leading to features like automatic semicolon insertion and strange behaviors like `typeof null` returning 'object'.
#3about 4 minutes
How the two-pass compiler enables variable hoisting
JavaScript's two-pass compiler first allocates memory for variables and then executes code, which explains why variables can be accessed before their declaration.
#4about 11 minutes
Variable scope examples and global scope pollution
Failing to declare variables with `var` can cause them to be implicitly created on the global scope, leading to unintended side effects and bugs.
#5about 12 minutes
Understanding block scope with `let` and `const`
ES6 keywords `let` and `const` introduce block-level scope, which prevents variables from leaking and helps avoid common bugs found with function-scoped `var`.
#6about 6 minutes
The `this` keyword as the thing to the left of the dot
The value of `this` is determined by the execution context, or 'the thing to the left of the dot', which can cause unexpected behavior inside callbacks like `setTimeout`.
#7about 6 minutes
Explicitly setting `this` with `call` and `bind`
Use `call` to invoke a function with a specific `this` context immediately, or use `bind` to create a new function with a permanently bound `this` value.
#8about 6 minutes
How arrow functions provide lexical `this` binding
Arrow functions capture the `this` value from their surrounding lexical context at creation time, which solves common callback issues but also means their `this` cannot be rebound.
#9about 6 minutes
Visualizing the JavaScript event loop and call stack
JavaScript uses a single-threaded event loop with a call stack and a callback queue to handle asynchronous operations without blocking the main thread.
#10about 5 minutes
Interoperability between `async/await` and promises
Because `async/await` is syntactic sugar over promises, you can seamlessly mix styles by awaiting a promise or using `.then()` on an async function's return value.
#11about 9 minutes
Q&A: Arrow functions and Node.js multithreading
The discussion covers the trade-offs of using arrow functions, which can break context in libraries like Mocha, and explores approaches to multithreading in Node.js.
Related jobs
Jobs that call for the skills explored in this talk.
Dev Digest 215: Agent Memory, JS2026, Googlebot Analysis & Canvas❤️HTMLInside last week’s Dev Digest 215 .
🗿 Make AI talk like a caveman
🧠 A guide to context engineering for LLMs
🤖 Simon Willison on agentic engineering
🔐 Axios supply chain attack post mortem
🛡️ Designing AI agents to resist prompt injection
🎨 HTML in c...
Daniel Cranney
Dev Digest 195: End of Likes, JavaScript’s a Zoo, and Messing with Bots!Inside last week’s Dev Digest 195 .
👎 No more external likes
🤗 Needy programs
📉 The worst selling Microsoft product
🟨 JavaScript engines zoo
🍞 No more toasts!
🤖 Messing with bots
👔 Beware of fake job interviews
🗞️ Join over 150,000 developers alread...
Daniel Cranney
Dev Digest 198: 30 years of JS, In-Browser AI, How Attackers Abuse GenAI Inside last week’s Dev Digest 198 .
🎂 30 years of JavaScript
⏰ How long is a JavaScript second
💻 Clean code in Angular
🤦♂️ AI makes different mistakes than humans
👨💻 In-browser and offline AI
🟠 Undocumented Hacker News features
🐋 DeepSeek censored...
Daniel Cranney
Dev Digest 206: X Algorithm, Super Monkey Ball, Moltbot vs. SecurityInside last week’s Dev Digest 206 .
👀 How X chooses what you see
🟨 Building a JavaScript runtime in a month and a browser API in one shot
🔲 JavaScript frameworks heading into 2026
⚠️ AI is getting better at detecting security issues
🔓 Moltbot is a s...
From learning to earning
Jobs that call for the skills explored in this talk.