# JavaScript : le langage que personne n'a prévu et que tout le monde utilise

> JavaScript a été créé en 10 jours en 1995. Trente ans plus tard, c'est le langage de programmation le plus utilisé au monde. Personne n'avait prévu ça.


*Ou : Comment un langage créé en 10 jours est devenu le socle technique d'Internet*

---

En mai 1995, Brendan Eich a créé un langage de programmation en 10 jours chez Netscape. Le cahier des charges : « quelque chose qui ressemble à Java mais pour les scripts dans le navigateur ». Le nom « JavaScript » était un coup marketing — aucun rapport avec Java. Le langage avait des bizarreries (`typeof null === "object"`), des incohérences (`0.1 + 0.2 !== 0.3`), et une coercition de types que ses propres créateurs qualifient de « surprenante ».

Trente ans plus tard, c'est le langage de programmation le plus utilisé au monde. Pas parce qu'il est le meilleur. Parce qu'il est le *seul* qui tourne nativement dans tous les navigateurs. Ce monopole de fait l'a rendu incontournable côté [frontend](/glossaire/developpement-web/frontend/), puis Node.js l'a exporté côté [backend](/glossaire/developpement-web/backend/), et aujourd'hui il est partout — applications mobiles (React Native), desktop (Electron), et même [machine learning](/glossaire/intelligence-artificielle/machine-learning/) (TensorFlow.js).

## Du navigateur au serveur — un langage sans frontières

{.subtitle}

### Ce que JavaScript fait dans le navigateur

JavaScript est le troisième pilier du web, avec [HTML](/glossaire/developpement-web/html/) (structure) et [CSS](/glossaire/developpement-web/css/) (apparence). Il ajoute le **comportement** — tout ce qui est interactif, dynamique, réactif : réagir aux clics, valider des formulaires, charger des données sans recharger la page, animer des éléments, manipuler le DOM en temps réel.

### Node.js : JavaScript sort du navigateur

En 2009, Ryan Dahl a créé **Node.js** — un runtime qui exécute JavaScript côté serveur. npm (son gestionnaire de paquets) est devenu le plus grand registre de packages au monde — plus de 2 millions de paquets. Le même développeur pouvait enfin écrire le frontend *et* le backend dans le même langage.

### L'écosystème moderne

| Domaine | Outils/Frameworks |
| :-- | :-- |
| **Frontend** | React, Vue.js, Angular, Svelte |
| **Backend** | Node.js, Express, Fastify, Nest.js |
| **Mobile** | React Native, Expo |
| **Desktop** | Electron (VS Code, Discord, Slack) |
| **Build** | Vite, webpack, esbuild |
| **Test** | Jest, Vitest, Playwright |

### Le dialogue du `undefined`

**DevOps Dave :** J'ai un bug. La fonction retourne `undefined`.

**Security Sarah :** Tu as oublié le `return` ?

**DevOps Dave :** Non, la fonction a bien un return.

**Security Sarah :** C'est une fonction async et tu n'as pas mis `await` devant l'appel ?

**DevOps Dave :** ... Ah.

**Security Sarah :** JavaScript a plus de façons de retourner `undefined` que la plupart des langages ont de types. C'est le prix de la flexibilité.

### Tableau récapitulatif

| Concept | En une phrase |
| :-- | :-- |
| **JavaScript** | Seul langage de programmation natif du navigateur, étendu au serveur avec Node.js. |
| **Node.js** | Runtime qui exécute JavaScript côté serveur. |
| **npm** | Gestionnaire de paquets — le plus grand registre de packages au monde. |
| **ES6+** | Versions modernes de JavaScript (const, let, arrow functions, async/await). |
| **DOM** | L'arbre HTML que JavaScript manipule pour rendre la page interactive. |

### Le mot de la fin

JavaScript est la preuve qu'en technologie, « être là au bon moment » bat « être le meilleur ». Il n'est pas le langage le mieux conçu, le plus performant, ou le plus élégant. Mais il était là quand le web avait besoin d'un langage, et il n'a jamais lâché. Ses bizarreries sont devenues des features. Ses limitations ont engendré [TypeScript](/glossaire/developpement-web/typescript/). Et son omniprésence est devenue sa qualité principale.


