Peter Kröner
Best of the Worst – the most awful anti-features in JavaScript, ranked!
#1about 2 minutes
Ranking the worst features in JavaScript's history
An introduction to JavaScript's most confusing and sometimes useful anti-features, ranked using a classic internet tier list.
#2about 4 minutes
The unexpected behavior of primitive object wrappers
Primitive wrappers like `new Boolean(false)` create objects that are always truthy, leading to confusing behavior in conditional statements.
#3about 5 minutes
Using the function constructor to access the global scope
The `new Function()` constructor always executes in the global scope, providing a reliable way to bypass locally shadowed global variables like `window` or `undefined`.
#4about 2 minutes
How JavaScript's global scope and environment records work
The global scope is a special environment record that uses the `window` object as a backend for storing variables.
#5about 3 minutes
Why the `with` statement slows down all JavaScript code
The `with` statement prevents static analysis of variable locations, forcing JavaScript engines to disable certain optimizations and making all code potentially slower.
#6about 3 minutes
How new keywords are added without breaking old code
JavaScript introduces new syntax like `for...of` by using contextual keywords, which are only treated as keywords in specific positions to maintain backwards compatibility.
#7about 6 minutes
The many pitfalls and traps of using parseInt
`parseInt` has multiple issues, including returning a float and auto-detecting hexadecimal prefixes, which can lead to unexpected bugs.
#8about 1 minute
A rapid review of other strange JavaScript features
A quick look at other historical oddities like `document.all`, `new Array()`, and deprecated string HTML wrapper methods.
Related jobs
Jobs that call for the skills explored in this talk.
Matching moments
03:03 MIN
The origin and design philosophy of JavaScript
JavaScript the Grumpy Parts
05:29 MIN
Understanding JavaScript's forgiving nature and its quirks
JavaScript the Grumpy Parts
04:53 MIN
The four pillars of high-performance JavaScript
Things I learned while writing high-performance JavaScript applications
06:47 MIN
Decoding common javascript obfuscation techniques
Cracking the Code: Decoding Anti-Bot Systems!
05:39 MIN
Key findings from the 2023 Web Almanac on JavaScript
WeAreDevelopers LIVE - the weekly developer show with Chris Heilmann and Daniel Cranney
10:23 MIN
Reframing common complaints about JavaScript development
How to Stop Choosing JavaScript Frameworks and Start Living
05:08 MIN
The web is slow and fragile because of JavaScript
The Lean Web
04:38 MIN
Weaponizing old and obscure browser features
Defeat that legacy monster! Guerilla refactoring with web standards
Featured Partners
Related Videos
JavaScript the Grumpy Parts
Rob Richardson
Defeat that legacy monster! Guerilla refactoring with web standards
Peter Kröner
C++ Features You Might Not Know
Jonathan Müller
Explore new web features before everyone else
Nikita Dubko
Things I learned while writing high-performance JavaScript applications
Michele Riva
The Lean Web
Chris Ferdinandi
The 2025 State of JavaScript Testing
Daniel Afonso
The Resilience of the World Wide Web
Related Articles
View all articles


.png?w=240&auto=compress,format)
From learning to earning
Jobs that call for the skills explored in this talk.

Speech Processing Solutions
Vienna, Austria
Intermediate
CSS
HTML
JavaScript
TypeScript

JO Media Software Solutions GmBh
Brunn am Gebirge, Austria
Senior
CSS
Angular
JavaScript
TypeScript

doinstruct Software GmbH
Berlin, Germany
Senior
GIT
JavaScript
TypeScript

Bite Client
Atlanta, United States of America
Remote
€55-90K
Senior
Ruby
Backbone.js


autoiXpert GmbH & Co. KG
Stuttgart, Germany
Senior
Node.js
Angular
MongoDB
TypeScript

Saby New Compy
Bielefeld, Germany
Intermediate
Java
Kotlin

infomax websolutions GmbH
Grassau, Germany
Intermediate
Senior
CSS
HTML
JavaScript
TypeScript
