Mai 1995, Mountain View. Brendan Eich a trente-trois ans et une station Silicon Graphics Indy sur son bureau, chez Netscape, où il est arrivé le 3 avril. Officiellement, il a passé son premier mois dans l'équipe serveur. Officieusement, il a dix jours pour prouver qu'un navigateur peut exécuter un petit langage de programmation, et que Netscape est capable de l'écrire. Il a un nom de code choisi par Marc Andreessen, Mocha, une consigne venue d'en haut, « que ça ressemble à Java », et une date : la première bêta de Navigator 2.0 est prévue pour septembre.
Il écrit un analyseur syntaxique à la main et un interpréteur de bytecode. Selon ses souvenirs, sans trace écrite, cela se passe du 6 au 15 mai. Au bout des dix jours, il montre le résultat à toute l'ingénierie de Netscape : une console dans une version pré-alpha du navigateur, où l'on tape une expression et où la page répond. La démonstration convainc. Le langage que deux développeurs sur trois utiliseront trente ans plus tard vient de naître, et personne dans la salle ne l'appelle encore JavaScript.
Scheme promis, Java imposé
Eich n'était pas venu pour ça. Sept ans chez Silicon Graphics sur le noyau Unix, trois ans chez MicroUnity, une start-up de processeurs vidéo, puis Netscape l'a recruté au début de 1995 avec un appât précis, qu'il citera encore treize ans plus tard sur son blog : « faire du Scheme » dans le navigateur. Scheme est un dialecte de Lisp, universitaire, l'inverse de ce que le marketing veut montrer.
Car entre l'embauche et l'arrivée, le décor a changé. Le cri de ralliement d'Andreessen en réunion, tel qu'Eich s'en souvient : « Netscape plus Java tue Windows ». Le 23 mai 1995, le jour où Sun annonce publiquement Java, Netscape annonce qu'il en prend la licence. Scheme, Perl, Python, Tcl et Visual Basic sont écartés pour des raisons commerciales ou de calendrier. Reste à inventer un « petit langage » qui ait l'air de Java sans en être.
Le diktat de la direction de l'ingénierie était que le langage devait « ressembler à Java ».
C'est Eich qui le raconte, en 2008, sur son blog. Ressembler, donc : accolades, points-virgules, le mot-clé this. Mais en dessous, il fait ce qu'il veut. Pas de classes, elles prendraient trop de temps et feraient concurrence à Java : des objets qui héritent les uns des autres par un simple lien, idée empruntée au langage Self. Des fonctions qu'on passe en argument comme n'importe quelle valeur, héritage de Scheme. Un costume de Java sur un squelette de Lisp. Il en parlera plus tard comme d'un « enfant de l'amour, vite fait, entre C et Self ».
Ce qu'un script fait dans une page
Une page web, en 1995, c'est du texte, des images, des liens. Pour vérifier qu'un formulaire est bien rempli, il faut l'envoyer au serveur, attendre, et recevoir une nouvelle page qui dit « champ manquant ». Un script, c'est quelques lignes écrites directement dans le HTML, que le navigateur exécute sur place : au clic, à la saisie, au chargement. Andreessen voulait que n'importe qui puisse en écrire trois lignes sans apprendre à programmer. C'est de là que viennent les facilités du langage. Et ses pièges.
Trois noms en sept mois
Mocha ne plaît pas au marketing, racontera Eich. Le 18 septembre 1995, la première bêta de Navigator 2.0 sort avec le langage sous le nom de LiveScript. Le gel des fonctionnalités d'août a figé la version 1.0 à ce qui marchait à peu près dans le prototype : « un tri », selon le mot des historiens du langage.
Le 4 décembre 1995, communiqué commun de Netscape et de Sun : LiveScript s'appelle désormais JavaScript, « un langage de script d'objets ouvert et multiplateforme », qui « complète Java ». Vingt-huit entreprises, d'America Online à Toshiba, l'approuvent. Sun dépose la marque et la concède à Netscape. Bill Joy, cofondateur de Sun, est cité : JavaScript sera « la méthode la plus efficace pour relier le contenu HTML aux applets Java ». Les deux langages n'ont en commun que la surface. Le nom est un coup de marketing, et il a marché : trente et un ans plus tard, on explique encore aux débutants que Java et JavaScript n'ont rien à voir.
typeof null et le 404 qui voulait être un nombre
Deux exemples suffisent, vérifiables dans n'importe quelle console. Premier : typeof null renvoie « object ». Demander à JavaScript le type de « rien » et obtenir « un objet ». Eich l'explique lui-même : dans Mocha, chaque valeur portait une étiquette interne indiquant son type, et null partageait l'étiquette des objets. Une fuite d'implémentation devenue règle du langage.
Deuxième : l'égalité == convertit les types avant de comparer. L'origine est datée. Des utilisateurs internes de Netscape, à l'été 1995, demandent que la chaîne « 404 » renvoyée par un serveur soit égale au nombre 404, et qu'un champ de formulaire vide vaille 0 dans un calcul. Eich ajoute ces conversions après le sprint. Résultat : 1 == '1' est vrai, 1 == '1.0' est vrai, mais '1' == '1.0' est faux. L'égalité stricte ===, qui compare sans convertir, arrive dans Internet Explorer 4 vers la fin de 1997, puis dans la norme en 1999. Elle s'ajoute, sans remplacer l'autre.
Un défaut dont un million de pages dépendent n'est plus un défaut. C'est une clause du contrat.
C'est la raison pour laquelle rien n'a été corrigé. Très vite, des pages publiées comptent sur ces comportements. Les retirer, c'est casser des sites que personne ne contrôle. Le comité de normalisation en fera un principe, tenu en un slogan : ne pas casser le web.
Copié, normalisé, enterré, ressuscité
Microsoft ne demande pas la permission : dès octobre 1995, une équipe de Redmond reconstitue LiveScript à partir des bêtas, et le 13 août 1996, Internet Explorer 3 sort avec JScript, copie compatible sous un autre nom. Netscape, qui redoute une norme dominée par Microsoft, porte le langage devant l'Ecma, à Genève : première réunion du comité TC39 fin novembre 1996 chez Netscape, norme ECMA-262 approuvée en juin 1997. Sun refuse de céder la marque JavaScript, Netscape garde LiveScript, et le nom provisoire reste : ECMAScript. Eich dira que ça sonne comme une maladie de peau.
La guerre des navigateurs tourne au désastre pour Netscape, qui passe de plus de 90 % de part de marché à moins de 1 % en 2006 ; AOL le rachète en novembre 1998 pour 4,2 milliards de dollars. Le langage, lui, survit à son éditeur. Le 18 février 2005, Jesse James Garrett nomme « Ajax » la technique qui permet à une page de recharger ses données sans se recharger elle-même, celle de Gmail et de Google Maps. Le 27 mai 2009, Ryan Dahl publie Node.js, qui sort le langage du navigateur pour le faire tourner sur des serveurs. Le complément de Java est partout où Java voulait être.
Trente et un ans plus tard
Dans l'enquête 2025 de Stack Overflow, 66 % des 31 771 répondants à la question sur les langages déclarent avoir utilisé JavaScript dans l'année : première place. Selon W3Techs, 98,9 % des sites web s'en servent côté client en octobre 2026. Sur GitHub, nuance utile, c'est TypeScript, un JavaScript avec des types, qui est passé en tête en août 2025. Eich a cofondé Mozilla en 1998, puis Brave en 2015. En 2008, sur son blog, il jugeait sa création en paraphrasant un mot prêté à Samuel Johnson.
Ce qui est bon n'est pas original, et ce qui est original n'est pas bon.
En 1996, interrogé peu avant la version 1.0, il disait souhaiter que le langage « reste petit, mais devienne omniprésent sur le web ». Il a obtenu la moitié. Tapez typeof null dans la console de n'importe quel navigateur, et la réponse est celle de l'étiquette posée sans doute en mai 1995 sur une station Indy, entre le 6 et le 15, à Mountain View : « object ». Dix jours pour l'écrire. Trente et un ans à ne pas pouvoir y toucher.