1. How to use event delegation with jQuery
  2. How I built a password toggle script in vanilla JavaScript
  3. Declare multiple JavaScript variables in one statement
  4. Building a word and character count app in vanilla JavaScript
  5. Named callback functions in JavaScript
  6. The difference between parameters and arguments in JavaScript functions
  7. Short-circuit evaluation in JavaScript
  8. Recreating jQuery's basic "effects" in vanilla JS
  9. How to manipulate an element's classes in vanilla JS
  10. Reduce an array to a single value with vanilla JS
  11. How to scope your selectors in vanilla JS
  12. How to empty an element in vanilla JS
  13. Returning boolean values in JavaScript
  14. How to check if every item in an array meets a condition
  15. The nullish coalescing operator in JavaScript
  16. How I built a random quotes app with vanilla JavaScript
  17. How I built a top stories feed in vanilla JS
  18. How to get your Jekyll posts as a JavaScript array
  19. How to detect form submissions in JavaScript
  20. How to structure a JavaScript file
  21. How to build a JavaScript clock
  22. How to stop an infinite loop in Chromium
  23. My favourite ES6 features
  24. My approach to event delegation
  25. How I use event delegation with Reef
  26. The difference between nodeName and tagName
  27. How to get the active element in DevTools
  28. Resources for regular expressions
  29. Two ways to create a regular expression in JavaScript
  30. Array literals vs the Array() constructor
  31. Three ways to write a JavaScript function
  32. Guard clauses in JavaScript
  33. The simplest way to check the event target
  34. How the Array.prototype.slice.call() trick works
  35. Static vs live NodeLists
  36. Syntax errors vs logic errors
  37. How to get the last item in a JavaScript array
  38. String concatenation in vanilla JS
  39. Nodes aren't always HTML elements
  40. Name your variables explicitly
  41. Everyone has JavaScript, right?
  42. How to manipulate attributes in vanilla JS
  43. Array.indexOf() vs Array.includes()
  44. How to get the children of an element in vanilla JS
  45. Get an element's total width and height in vanilla JS
  46. The outerHTML property in vanilla JS
  47. How to check an email address in vanilla JS
  48. Understanding client-side JavaScript frameworks
  49. How to write an IIFE from scratch
  50. The difference between break and continue in JavaScript
  51. The textContent and innerText properties in vanilla JS
  52. The console.table() method in JavaScript
  53. What is the DOM?
  54. Properties and methods in JavaScript
  55. Dot notation and bracket notation in JavaScript
  56. Introducing JavaScript objects
  57. Understanding prototypes and inheritance in JavaScript
  58. The in operator vs the hasOwnProperty() method in vanilla JavaScript
  59. Never rely on the global event property in JavaScript
  60. Event flow in JavaScript
  61. The difference between event target and event currentTarget
  62. The difference between event.stopPropagation() and event.stopImmediatePropagation()
  63. The event.preventDefault() method in JavaScript
  64. Getting started with Svelte
  65. The instanceof operator in JavaScript
  66. An addClass() helper function
  67. How to check if an object has at least one property in JavaScript
  68. Named access on the window object
  69. Implicit return statements in JavaScript
  70. The const keyword in JavaScript
  71. Changing the context of the forEach() callback
  72. The flatMap() method in vanilla JS
  73. The difference between null and undefined in JavaScript
  74. Setting defaults for package.json
  75. How to check if a value is an array in JavaScript
  76. How to inspect JSON data in Chrome DevTools and Visual Studio Code
  77. When should you use a switch statement in JavaScript?
  78. Serialize form data into a query string in vanilla JS
  79. Serialize form data into an array in vanilla JS
  80. Serialize form data into an object in vanilla JS
  81. Serialize form data into a JSON string in vanilla JS
  82. Serialize.js: A tiny form serialization library
  83. Get the common ancestor of two or more elements in vanilla JS
  84. Get a random truthy/falsy value in JavaScript
  85. Sorting numbers in vanilla JS
  86. The FizzBuzz challenge in JavaScript
  87. Simple is better than complex
  88. Long string literals in JavaScript
  89. How to document your JavaScript functions
  90. The difference between this and $(this) in jQuery
  91. Convert a string to title case in vanilla JS
  92. Loop through an object using the Object.keys() method
  93. The string repeat() method in vanilla JS
  94. Return values in JavaScript functions
  95. Chaining function calls in JavaScript
  96. The array at() method in vanilla JS
  97. Adding two arrays together in JavaScript
  98. Detect if a function was invoked as a constructor in JavaScript
  99. How to replace a class in vanilla JS
  100. Caching jQuery selections for better performance
  101. Type checking JavaScript in Visual Studio Code
  102. Numeric separators in JavaScript
  103. jQuery is still cool
  104. Implicit iteration in jQuery
  105. The modern syntax for the ready() method in jQuery
  106. Throwing errors in JavaScript
  107. Catching errors in JavaScript
  108. Working with data attributes in vanilla JS
  109. Browser APIs versus third-party APIs
  110. Accessible links in single-page apps
  111. The Promise.allSettled() method
  112. Unique array values in JavaScript
  113. How to choose between let and const in JavaScript
  114. Asynchronously check if a file exists in Node.js
  115. Asynchronously read and write files in Node.js
  116. Asynchronously append data to a file in Node.js
  117. Revisiting FizzBuzz
  118. How to get today's date in vanilla JS