Wenn JavaScript auf eines hin optimiert ist, dann darauf, mich zur Weißglut zu bringen. Hier eine kleine (noch im Aufbau befindliche) Sammlung der vielen Sachen, die mich besonders stören.
## `undefined` ist kein Keyword
[Quelle: MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined)
Anders als `null` ist `undefined` kein Keyword, sondern eine globale Variable. In allen modernen Browsern ist diese zumindest nicht schreibbar und nicht konfigurierbar, was aber scheinbar nicht immer so war.
```javascript
undefined = 5; // Variable wird nicht überschrieben
console.log(undefined); // -> undefined
let undefined = 5; // Syntax-Fehler, gibt es schon
```
Man kann `undefined` aber trotzdem als Funktionsparameter verwenden.
```javascript
function greet(undefined) {
console.log(`Hallo ${undefined}!`);
}
greet("Welt"); // -> Hallo Welt!
```
Außerdem kann man es in anderen Scopes als dem Globalen erneut definieren und somit verdecken.
```javascript
function greet2() {
let undefined = "Welt";
console.log(`Hallo ${undefined}!`);
}
greet2(); // -> Hallo Welt!
```
Fantastisch. Hat was von `#define TRUE (rand() % 1024)` in C.