JavaScript : le langage que personne n'a prévu et que tout le monde utilise
Ou : Comment un langage créé en dix jours est devenu le socle technique d’Internet
Vous cliquez sur un cœur sous une photo. Il devient rouge, le compteur passe de 41 à 42, et la page ne s’est pas rechargée. Vous tapez les premières lettres d’une ville dans un formulaire, et une liste de suggestions apparaît avant la fin du mot. Vous faites défiler un fil d’actualité, et de nouveaux messages arrivent tout seuls en bas. Derrière chacun de ces petits miracles quotidiens, il y a le même langage : JavaScript.
Si une page web était un restaurant, le HTML serait le plan de la salle et le CSS la décoration. JavaScript serait le personnel de salle : ceux qui réagissent quand vous levez la main, prennent votre commande, filent en cuisine et reviennent avec l’assiette. Sans eux, la salle est jolie, mais rien ne s’y passe.
Cette page part de zéro. Vous n’avez pas besoin de savoir programmer, et vous pourrez même taper vos premières lignes de JavaScript sans rien installer, directement dans le navigateur avec lequel vous lisez ceci.
Qu’est-ce que JavaScript : le langage qui rend les pages web interactives
D’accord, mais concrètement ?
JavaScript est un langage de programmation, c’est-à-dire une façon d’écrire des instructions qu’un ordinateur sait exécuter. Sa particularité, et c’est tout son succès, est que tous les navigateurs savent l’exécuter directement. Chrome, Firefox, Safari et Edge contiennent chacun un « moteur JavaScript », un programme qui lit et exécute le code JavaScript des pages que vous visitez.
Concrètement, JavaScript sert à :
- réagir à ce que fait l’utilisateur : un clic, une saisie, un défilement ;
- modifier la page sans la recharger : afficher un message, ouvrir un menu, masquer un bloc ;
- vérifier un formulaire avant l’envoi (« cet e-mail n’a pas l’air valide ») ;
- aller chercher des données sur un serveur en arrière-plan, puis les afficher ;
- animer des éléments, dessiner des graphiques, faire tourner des jeux.
Il fait partie des trois langages du frontend, la partie d’un site qui s’exécute chez vous. Et c’est le seul des trois qui soit un vrai langage de programmation : HTML et CSS décrivent une page, JavaScript agit dessus.
Une petite histoire : dix jours, trois noms, zéro rapport avec Java
En mai 1995, Brendan Eich, ingénieur chez Netscape (l’éditeur du navigateur dominant de l’époque), écrit la première version du langage en une dizaine de jours. Le besoin était simple : permettre aux pages web de réagir un peu, sans passer par un vrai programme compilé.
Le langage s’appelle d’abord Mocha, puis LiveScript, puis, en décembre 1995, JavaScript. Ce dernier nom est un choix marketing : Java, le langage de Sun Microsystems, était à la mode, et Netscape a passé un accord avec Sun1. Les deux langages n’ont pourtant presque rien en commun. Java est à JavaScript ce que la voiture est au voiturier : un mot en commun, deux métiers différents.
En 1997, pour que tous les navigateurs exécutent le même langage, sa définition est confiée à un organisme de normalisation, Ecma International. La norme s’appelle ECMAScript, et c’est pour ça que vous croiserez des sigles comme « ES6 » ou « ES2015 » : ce sont des versions de cette norme. La version de 2015 a été une vraie modernisation, et c’est celle qu’on apprend aujourd’hui comme base.
Trente ans plus tard, d’après le sondage annuel de Stack Overflow, JavaScript est le langage le plus utilisé par les développeurs pour la onzième année consécutive, avec 66 % des répondants en 2025. Pas parce qu’il est le mieux conçu. Parce qu’il était dans tous les navigateurs quand le web a explosé, et qu’il n’en est jamais sorti.
Essayez tout de suite : la console du navigateur
Pas besoin d’installer quoi que ce soit pour écrire votre premier JavaScript. Ouvrez les outils de développement de votre navigateur :
- Windows ou Linux :
F12, ouCtrl+Maj+Jpour aller directement à la console dans Chrome et Edge ; - Mac :
Cmd+Option+Jdans Chrome ; - Firefox :
Ctrl+Maj+K(ouCmd+Option+Ksur Mac).
Cliquez sur l’onglet « Console ». Vous voyez une ligne où l’on peut écrire. Tapez ceci, puis Entrée :
| |
La console répond 4. Vous venez d’exécuter du JavaScript. Essayez maintenant :
| |
La première ligne affiche un message. La seconde vous renvoie le titre de la page que vous êtes en train de lire. Ce document, c’est la page elle-même, telle que JavaScript la voit. Vous pouvez tout essayer sans crainte : rien de ce que vous tapez ici ne modifie le site réel, et tout disparaît au rechargement de la page.
Certains navigateurs affichent un avertissement la première fois que vous collez du code dans la console. Il est justifié : ne collez jamais dans la console un code qu’un inconnu vous demande d’exécuter, c’est une arnaque classique pour voler un compte. Taper vous-même 2 + 2 ne présente aucun risque.
Les briques de base, en cinq minutes
Tout programme JavaScript est construit à partir de quelques briques. Vous pouvez taper chacun de ces exemples dans la console.
Les variables sont des boîtes étiquetées dans lesquelles on range une valeur pour la réutiliser.
| |
Les types de valeurs décrivent ce qu’on range dans ces boîtes.
| |
Les conditions permettent de faire un choix.
| |
Les fonctions sont des recettes : on les écrit une fois, on les utilise autant qu’on veut.
| |
Avec ces quatre briques, on peut déjà écrire beaucoup de choses. Tout le reste du langage, y compris les frameworks les plus sophistiqués, est construit par-dessus.
Réagir à l’utilisateur : les événements
Au restaurant, le personnel de salle ne court pas partout en permanence. Il attend un signal : une main levée, une assiette vide, un client qui se lève. En JavaScript, ces signaux s’appellent des événements. Un clic, une touche pressée, un formulaire envoyé, une page qui a fini de charger : tout est événement. On dit à JavaScript « quand tel événement se produit sur tel élément, fais ceci ».
Voici un exemple complet : un champ de texte limité à 140 caractères, avec un compteur qui se met à jour pendant la frappe.
| |
addEventListener signifie littéralement « ajoute quelqu’un qui écoute ». On place un serveur à côté du champ de texte, et à chaque lettre tapée, il met à jour le panneau. C’est ce mécanisme, répété des milliers de fois, qui fait tourner toutes les interfaces que vous utilisez.
L’asynchrone, ou l’art de ne pas attendre planté devant la cuisine
Beaucoup d’actions prennent du temps : charger des données depuis un serveur, lire un fichier, attendre une réponse. Si JavaScript restait bloqué pendant ce temps, la page entière se figerait. Plus de clics, plus de défilement, rien.
Imaginez un serveur de restaurant qui, après avoir porté une commande en cuisine, resterait debout devant le passe jusqu’à ce que le plat soit prêt, en ignorant toutes les autres tables. C’est exactement ce que JavaScript évite de faire. Il transmet la commande, s’occupe des autres tables, et revient chercher le plat quand la cuisine sonne. C’est ce qu’on appelle le code asynchrone.
La façon moderne de l’écrire utilise les mots-clés async et await :
| |
fetch envoie une requête à un serveur, souvent une API REST. await veut dire « attends le résultat ici, mais laisse le reste de la page vivre pendant ce temps ». C’est puissant, et c’est aussi la source d’un des bugs les plus fréquents chez les débutants.
DevOps Dave : J’ai un bug. Ma fonction qui charge la météo ne renvoie rien du tout.
Security Sarah : Tu as oublié le return ?
DevOps Dave : Non, il y a bien un return.
Security Sarah : C’est une fonction async, et tu l’appelles sans await devant ?
DevOps Dave : … Ah.
Security Sarah : Alors tu ne reçois pas la météo. Tu reçois un ticket de commande qui dit « la météo arrivera plus tard ». Et tu es en train d’essayer de le lire comme si c’était le plat.
Ce « ticket de commande » a un nom : une promesse (en anglais Promise). C’est l’objet que renvoie toute fonction async, et il faut await pour obtenir ce qu’il contient.
Les bizarreries célèbres, et pourquoi elles existent
JavaScript a été écrit vite, et ses premières versions ont dû rester compatibles avec tout le code écrit depuis. Résultat : quelques comportements surprenants sont restés, et ils font partie de sa réputation.
| |
Les quatre premières lignes viennent de la conversion automatique de types : quand on mélange un texte et un nombre, JavaScript essaie de deviner ce que vous vouliez dire, et il devine parfois mal. La règle pratique qui évite l’essentiel des ennuis : utilisez toujours === et jamais == pour comparer.
typeof null qui répond "object" est un vrai bug de la première implémentation, trop ancien pour être corrigé sans casser des millions de sites2.
Et la dernière ligne n’est pas une bizarrerie de JavaScript, contrairement à sa réputation. Presque tous les langages donnent le même résultat, parce qu’ils stockent les nombres à virgule de la même façon3. JavaScript est simplement celui qu’on accuse le plus souvent, parce que c’est celui que tout le monde essaie dans sa console.
Hors du navigateur : Node.js et le reste du monde
Pendant ses quatorze premières années, JavaScript ne vivait que dans les navigateurs. En 2009, Ryan Dahl crée Node.js, un environnement qui permet d’exécuter JavaScript directement sur un ordinateur ou un serveur, sans navigateur. Du jour au lendemain, le même langage pouvait servir à la salle et à la cuisine, au frontend et au backend.
Avec Node.js est arrivé npm, un gestionnaire de paquets : une gigantesque bibliothèque de code partagé, où l’on trouve des millions de modules prêts à l’emploi, de la mise en forme de dates au serveur web complet. Au lieu de tout réécrire, on installe le module d’un autre.
Aujourd’hui, JavaScript tourne à peu près partout :
| Domaine | Exemples d’outils |
|---|---|
| Pages web (frontend) | React, Vue.js, Angular, Svelte |
| Serveurs (backend) | Node.js, Express, Fastify, NestJS |
| Applications mobiles | React Native, Expo |
| Logiciels de bureau | Electron (utilisé par VS Code, Discord, Slack) |
| Outils de construction | Vite, webpack, esbuild |
| Tests | Jest, Vitest, Playwright |
Les outils de la première ligne sont des frameworks : des boîtes à outils qui organisent le code des grosses applications. Ils s’apprennent après les bases, jamais avant.
JavaScript et TypeScript
En avançant, vous entendrez parler de TypeScript. C’est JavaScript avec une couche en plus : on y précise le type de chaque valeur (« ceci est un nombre », « ceci est un texte »), et un outil vérifie la cohérence avant l’exécution. Ça attrape à l’avance une bonne partie des erreurs du type "5" + 1. Le code TypeScript est ensuite converti en JavaScript ordinaire, parce que c’est ce que les navigateurs comprennent.
Pour un débutant, l’ordre est simple : JavaScript d’abord, TypeScript ensuite. TypeScript ne remplace pas JavaScript, il le surveille.
Par où commencer
Si ce premier contact vous a donné envie d’aller plus loin, voici un parcours raisonnable :
- Les bases dans la console : variables, types, conditions, boucles, fonctions.
- La manipulation de la page : sélectionner des éléments, réagir aux événements, modifier du texte.
- L’asynchrone :
fetch, les promesses,asyncetawait. - Un petit projet complet : une liste de tâches, une calculatrice, un quiz. C’est là qu’on apprend vraiment.
- Ensuite seulement, un framework ou TypeScript.
La référence gratuite et en grande partie traduite en français est le guide JavaScript de MDN Web Docs, la documentation de Mozilla. Débutants et développeurs expérimentés l’utilisent tous les jours.
Le petit lexique de JavaScript
| Terme | En une phrase |
|---|---|
| JavaScript | Le langage de programmation que tous les navigateurs savent exécuter. |
| ECMAScript | Le nom officiel de la norme qui définit JavaScript (ES2015, ES2024…). |
| Moteur JavaScript | Le programme, intégré au navigateur, qui exécute le code. |
| Console | L’outil du navigateur où l’on peut taper et tester du JavaScript. |
| Variable | Une boîte nommée qui contient une valeur (const, let). |
| Fonction | Une recette réutilisable qui prend des entrées et rend un résultat. |
| Événement | Un signal (clic, frappe, chargement) auquel le code peut réagir. |
| DOM | La page vue par JavaScript, sous forme d’arbre d’éléments modifiables. |
| Asynchrone | Du code qui lance une tâche longue sans bloquer le reste. |
| Promesse | L’objet qui représente un résultat pas encore arrivé. |
| Node.js | L’environnement qui exécute JavaScript hors du navigateur. |
| npm | Le gestionnaire de paquets de JavaScript, et son immense catalogue. |
Le mot de la fin
JavaScript est la preuve qu’en technologie, « être là au bon moment » bat « être le meilleur ». Il n’est ni le langage le mieux conçu, ni le plus rapide, ni le plus élégant. Mais il était dans le navigateur quand le web a eu besoin d’un langage, et il n’en est jamais reparti. Ses bizarreries sont devenues des questions d’entretien d’embauche. Ses limites ont donné naissance à TypeScript. Et son omniprésence est devenue sa principale qualité.
Il y a quelque chose de rassurant là-dedans pour un débutant : le langage le plus utilisé au monde a été écrit en dix jours, par quelqu’un qui pensait fabriquer un petit outil pour animer des boutons. Personne ne maîtrise tout du premier coup. Pas même le langage lui-même.
L’accord de décembre 1995 entre Netscape et Sun reposait sur une répartition des rôles : JavaScript serait présenté comme un petit langage de script pour les tâches simples dans le navigateur, et Java comme l’outil sérieux pour les composants web riches (les fameuses « applets »). Trente ans plus tard, les applets Java ont disparu des navigateurs, et le « petit langage de script » fait tourner une bonne partie d’Internet. Le marketing prévoit rarement la suite. Autre détail : le nom « JavaScript » est une marque déposée, aujourd’hui détenue par Oracle, qui a finalisé le rachat de Sun en 2010, et contestée depuis 2024 par une partie de la communauté, dont Brendan Eich et Ryan Dahl. C’est une des raisons pour lesquelles la norme officielle s’appelle ECMAScript. ↩︎
Dans la première version de JavaScript, chaque valeur était stockée avec une petite étiquette binaire indiquant son type. L’étiquette des objets était
000, etnullétait représenté par une valeur entièrement composée de zéros. Quandtypeoflisait l’étiquette denull, il trouvait000et concluait « objet ». Une correction a été proposée dans les années 2000, lors des travaux sur les versions suivantes de la norme, pour quetypeof nullréponde enfin"null". Elle a été rejetée, non parce qu’elle était mauvaise, mais parce qu’elle aurait cassé trop de sites existants. Le web a une règle d’or : on ne casse pas ce qui marche, même quand ce qui marche est un bug. ↩︎Les ordinateurs stockent les nombres en binaire, avec des 0 et des 1. Or 0,1 ne peut pas s’écrire exactement en binaire, pour la même raison que 1/3 ne peut pas s’écrire exactement en décimal (0,3333… à l’infini). L’ordinateur garde donc une valeur très proche, mais pas exacte, et l’addition fait apparaître le minuscule écart. Ce fonctionnement est défini par une norme internationale, IEEE 754, que respectent Python, Java, C, Go et JavaScript. Tapez
0.1 + 0.2en Python : vous obtiendrez le même résultat. C’est pour ça qu’on ne manipule jamais des montants en euros avec des nombres à virgule dans un vrai logiciel : on compte en centimes, avec des entiers. ↩︎