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.