The introduction of “use strict”;
greatly cleaned up the language, but there’s still some pain points to eliminate. I think JavaScript is ready for “use stricter”;
!
Disclaimer: This is not a real or upcoming feature of JavaScript, just my wishlist.
Stricter JavaScript
- Optional chaining and function invocation by default.
?.
,?[]
, and?()
are no longer necessary. Still want to blow up the whole app when traversing goes awry? Use the coalescing operator:uh.oh.spaghettio ?? throw new Error(‘burn it down’);
. null === undefined
. Then you only have to check one value. Why the hell are there two “empty” values anyway?!typeof null === ‘undefined’
. In keeping with the above point.0
is truthy.NaN
is the only falsy number we need.- Nothing coerces to a number. Use
parseInt
andparseFloat
to coerce strings. +
is only for addition, not string concatenation. Use template literals instead.Array.prototype.indexOf
returnsNaN
(a falsy value!) for no matches, not-1
.- No Automatic Semicolon Insertion. Stop being lazy, developers.
- Only strict equality is allowed.
==
does the same as===.
parseInt
radix always defaults to10
. I mean, how many times have you meant for it to be8
or16
?
Was there anything I missed? We can always put those things in the next breaking change of JavaScript: “use strictest”;
😆