JavaScript | MDN - Mozilla
Maybe your like
- Skip to main content
- Skip to search
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
View in English Always switch to English
JavaScriptJavaScript (ou JS en abrégé) est un langage de programmation léger, interprété (ou compilé à la volée) avec des fonctions de première classe. S'il est surtout connu comme langage de script pour les pages web, de nombreux environnements hors navigateur l'utilisent aussi, comme Node.js, Apache CouchDB (angl.) ou Adobe Acrobat (angl.). JavaScript est un langage à prototype, à ramasse-miettes, dynamique, prenant en charge plusieurs paradigmes : impératif, fonctionnel et orienté objet.
Les capacités dynamiques de JavaScript incluent la construction d'objets à l'exécution, les listes de paramètres variables, les fonctions comme variables, la création dynamique de scripts (via eval), l'introspection d'objets (via for...in et les utilitaires Object), et la récupération du code source (les fonctions JavaScript conservent leur texte source, accessible via toString()).
Cette section est dédiée au langage JavaScript lui-même, et non aux parties spécifiques aux pages web ou à d'autres environnements hôtes. Pour les API propres aux pages web, consultez API Web et DOM.
Les standards de JavaScript sont la spécification ECMAScript (angl.) (ECMA-262) et la spécification ECMAScript Internationalization API (angl.) (ECMA-402). Dès qu'un navigateur implémente une fonctionnalité, nous essayons de la documenter. Ainsi, il arrive que certaines propositions de nouvelles fonctionnalités ECMAScript (angl.) soient déjà implémentées dans les navigateurs ; la documentation et les exemples sur MDN peuvent donc les utiliser. Cela se produit le plus souvent entre les étapes (angl.) 3 et 4, généralement avant la publication officielle de la spécification.
Ne confondez pas JavaScript avec le langage Java — JavaScript n'est pas un « Java interprété ». « Java » et « JavaScript » sont des marques ou des marques déposées d'Oracle aux États-Unis et dans d'autres pays. Cependant, ces deux langages ont une syntaxe, une sémantique et des usages très différents.
La documentation JavaScript sur les fonctionnalités du langage (principalement le noyau ECMAScript) comprend :
- Le guide JavaScript
- La référence JavaScript
Pour plus d'informations sur les spécifications JavaScript et les technologies associées, voir Vue d'ensemble des technologies JavaScript.
Dans cet article
- Tutoriels pour les débutant·e·s
- Guides JavaScript
- Référence
Tutoriels pour les débutant·e·s
Nos modules principaux pour apprendre le développement web proposent des tutoriels modernes et à jour sur les bases de JavaScript.
Votre premier site web : ajouter de l'interactivitéCet article propose une brève introduction à JavaScript et à son utilisation, destinée aux personnes totalement débutantes en développement web.
Scripts dynamiques avec JavaScriptCe module se concentre sur l'essentiel du langage JavaScript, ainsi que sur quelques sujets clés autour : apprendre ces notions vous donnera une base solide.
Frameworks et bibliothèques JavaScriptLes frameworks JavaScript sont essentiels dans le développement web moderne côté client, fournissant des outils éprouvés pour créer des applications web interactives et évolutives. Beaucoup d'entreprises les utilisent comme standard, et de nombreux emplois en développement exigent désormais une expérience des frameworks. Cette série d'articles constitue un point de départ confortable pour débuter avec les frameworks.
Guides JavaScript
Guides fondamentaux du langage
Guide JavaScriptUn guide beaucoup plus détaillé du langage JavaScript, destiné à celles et ceux ayant déjà programmé en JavaScript ou dans un autre langage.
Intermédiaire
Objets JavaScript avancésLa nature orientée objet de JavaScript est importante à comprendre pour progresser et écrire un code plus efficace ; ce module est là pour vous y aider.
JavaScript asynchroneCe module présente le JavaScript asynchrone, pourquoi il est important et comment l'utiliser pour gérer efficacement les opérations potentiellement bloquantes, comme la récupération de ressources sur un serveur.
API web côté clientExplore ce que sont les API et comment utiliser les plus courantes dans vos développements.
Vue d'ensemble du langage JavaScriptUn aperçu de la syntaxe et de la sémantique de base de JavaScript pour celles et ceux venant d'autres langages.
Structures de données JavaScriptPrésentation des structures de données disponibles en JavaScript.
Comparaisons d'égalité et identitéJavaScript propose trois opérations de comparaison de valeurs : l'égalité stricte avec ===, l'égalité souple avec == et la méthode Object.is().
Énumérabilité et propriété des attributsComment les différentes méthodes qui parcourent les propriétés d'un objet gèrent l'énumérabilité et la propriété de ces attributs.
ClosuresUne closure est la combinaison d'une fonction et de l'environnement lexical dans lequel elle a été déclarée.
Avancé
Héritage et chaîne de prototypesExplication de l'héritage basé sur les prototypes, souvent mal compris et sous-estimé.
Gestion de la mémoireCycle de vie de la mémoire et ramasse-miettes en JavaScript.
Référence
Consultez la référence JavaScript complète.
Objets standardsDécouvrez les objets intégrés standards : Array, Boolean, Error, Function, JSON, Math, Number, Object, RegExp, String, Map, Set, WeakMap, WeakSet, et d'autres.
Expressions et opérateursApprofondissez le comportement des opérateurs JavaScript : instanceof, typeof, new, this, la priorité des opérateurs, etc.
Instructions et déclarationsDécouvrez le fonctionnement de do-while, for-in, for-of, try-catch, let, var, const, if-else, switch et d'autres instructions et mots-clés JavaScript.
FonctionsApprenez à utiliser les fonctions JavaScript pour développer vos applications.
ClassesLes classes JavaScript sont la manière la plus adaptée de faire de la programmation orientée objet.
Help improve MDN
Was this page helpful to you? Yes No Learn how to contributeCette page a été modifiée le 14 oct. 2025 par les contributeurs du MDN.
View this page on GitHub • Report a problem with this content Filter sidebar- JavaScript
- Tutoriels
- Guide JavaScript
- Introduction
- Types et grammaire
- Contrôle du flux et gestion des erreurs
- Boucles et itération
- Fonctions
- Expressions et opérateurs
- Numbers and strings
- Representing dates & times
- Expressions rationnelles
- Collections indexées
- Collections avec clés
- Manipuler les objets
- Using classes
- Utiliser les promesses
- Tableaux typés en JavaScript
- Itérateurs et générateurs
- Resource management
- Internationalization
- Modules JavaScript
- Intermédiaire
- Language overview
- Structures de données en JavaScript
- Différents tests d'égalité
- Rattachement des propriétés
- Fermetures (closures)
- Avancé
- L'héritage et la chaîne de prototypes
- Métaprogrammation
- Gestion de la mémoire
- Références
- Objets natifs
- AggregateError
- Array
- ArrayBuffer
- AsyncDisposableStack
- AsyncFunction
- AsyncGenerator
- AsyncGeneratorFunction
- AsyncIterator
- Atomics
- BigInt
- BigInt64Array
- BigUint64Array
- Boolean
- DataView
- Date
- decodeURI()
- decodeURIComponent()
- DisposableStack
- encodeURI()
- encodeURIComponent()
- Error
- escape() Obsolète
- eval()
- EvalError
- FinalizationRegistry
- Float16Array
- Float32Array
- Float64Array
- Function
- Generator
- GeneratorFunction
- globalThis
- Infinity
- Int8Array
- Int16Array
- Int32Array
- InternalError Non standard
- Intl
- isFinite()
- isNaN()
- Iterator
- JSON
- Map
- Math
- NaN
- Number
- Object
- parseFloat()
- parseInt()
- Promise
- Proxy
- RangeError
- ReferenceError
- Reflect
- RegExp
- Set
- SharedArrayBuffer
- String
- SuppressedError
- Symbol
- SyntaxError
- Temporal
- TypedArray
- TypeError
- Uint8Array
- Uint8ClampedArray
- Uint16Array
- Uint32Array
- undefined
- unescape() Obsolète
- URIError
- WeakMap
- WeakRef
- WeakSet
- Expressions et opérateurs
- Addition (+)
- Affectation après addition (+=)
- Assignement (=)
- Expression async function
- Expression async function*
- await
- ET binaire (&)
- Affectation après ET binaire (&=)
- NON binaire (~)
- OU binaire (|)
- Affectation après OU binaire (|=)
- OU exclusif binaire (^)
- Affectation après OU exclusif binaire (^=)
- class
- L'opérateur virgule
- L'opérateur conditionnel
- Décrémentation (--)
- L'opérateur delete
- Affecter par décomposition
- Division (/)
- Affectation après division (/=)
- Égalité (==)
- Exponentiation (**)
- Affectation après exponentiation (**=)
- L'opérateur function
- Expression function*
- Supérieur strict (>)
- Supérieur ou égal (>=)
- Opérateur de groupement
- import.meta
- import.meta.resolve()
- import
- L'opérateur in
- Incrémentation (++)
- Inégalité (!=)
- instanceof
- Décalage binaire à gauche (<<)
- Affectation après décalage à gauche (<<=)
- Inférieur strict (<)
- Inférieur ou égal (<=)
- ET logique (&&)
- Affectation après ET logique (&&=)
- NON logique (!)
- OU logique (||)
- Affectation après OU logique (||=)
- Multiplication (*)
- Affectation après multiplication (*=)
- L'opérateur new
- new.target
- null
- Affectation après coalescence des nuls (??=)
- Opérateur de coalescence des nuls (Nullish coalescing operator)
- Initialisateur d'objet
- Précédence des opérateurs
- Chaînage optionnel (optional chaining)
- Accesseurs de propriétés
- Reste (%)
- Affectation après reste (%=)
- Décalage binaire à droite (>>)
- Affectation après décalage à droite (>>=)
- Syntaxe de décomposition
- Égalité stricte (===)
- Inégalité stricte (!==)
- Soustraction (-)
- Affectation après soustraction (-=)
- super
- L'opérateur this
- L'opérateur typeof
- Négation unaire (-)
- Plus unaire (+)
- Décalage binaire à droite non-signé (>>>)
- Affectation après décalage à droite non signé (>>>=)
- L'opérateur void
- yield
- yield*
- Instructions et déclarations
- async function
- async function*
- await using
- bloc
- break
- class
- const
- continue
- debugger
- do...while
- vide
- export
- Expression statement
- for
- for await...of
- for...in
- for...of
- function
- function*
- if…else
- import
- Import attributes
- label
- let
- return
- switch
- throw
- try...catch
- using
- var
- while
- with Obsolète
- Fonctions
- Fonctions fléchées
- Valeurs par défaut des arguments
- L'opérateur get
- Définir une méthode
- Paramètres du reste (Rest parameters)
- L'opérateur set
- arguments
- arguments[@@iterator]()
- callee Obsolète
- length
- Classes
- constructor
- extends
- Propriétés privées
- Champs de classe publics
- static
- Static initialization blocks
- Expressions rationnelles
- Backreference: \1, \2
- Capturing group: (...)
- Character class escape: \d, \D, \w, \W, \s, \S
- Character class: [...], [^...]
- Character escape: \n, \u{...}
- Disjunction: |
- Input boundary assertion: ^, $
- Literal character: a, b
- Lookahead assertion: (?=...), (?!...)
- Lookbehind assertion: (?<=...), (?<!...)
- Modifier: (?ims-ims:...)
- Named backreference: \k<name>
- Named capturing group: (?<name>...)
- Non-capturing group: (?:...)
- Quantifier: *, +, ?, {n}, {n,}, {n,m}
- Échappement des propriétés Unicode
- Wildcard: .
- Word boundary assertion: \b, \B
- Erreurs
- AggregateError: No Promise in Promise.any was resolved
- Error: Permission denied to access property "x"
- InternalError: too much recursion
- RangeError: argument is not a valid code point
- RangeError: BigInt division by zero
- RangeError: BigInt negative exponent
- RangeError: form must be one of 'NFC', 'NFD', 'NFKC', or 'NFKD'
- RangeError: invalid array length
- RangeError: invalid date
- RangeError: precision is out of range
- RangeError: radix must be an integer
- RangeError: repeat count must be less than infinity
- RangeError: repeat count must be non-negative
- RangeError: x can't be converted to BigInt because it isn't an integer
- ReferenceError: "x" is not defined
- ReferenceError: assignment to undeclared variable "x"
- ReferenceError: can't access lexical declaration 'X' before initialization
- ReferenceError: must call super constructor before using 'this' in derived class constructor
- ReferenceError: super() called twice in derived class constructor
- SyntaxError: 'arguments'/'eval' can't be defined or assigned to in strict mode code
- SyntaxError: "0"-prefixed octal literals and octal escape seq. are deprecated
- SyntaxError: "use strict" not allowed in function with "x" parameter
- SyntaxError: "x" is a reserved identifier
- SyntaxError: \ at end of pattern
- SyntaxError: a declaration in the head of a for-of loop can't have an initializer
- SyntaxError: applying the 'delete' operator to an unqualified name is deprecated
- SyntaxError: arguments is not valid in fields
- SyntaxError: await is only valid in async functions, async generators and modules
- SyntaxError: await/yield expression can't be used in parameter
- SyntaxError: cannot use `??` unparenthesized within `||` and `&&` expressions
- SyntaxError: character class escape cannot be used in class range in regular expression
- SyntaxError: continue must be inside loop
- SyntaxError: duplicate capture group name in regular expression
- SyntaxError: duplicate formal argument x
- SyntaxError: for-in loop head declarations may not have initializers
- SyntaxError: function statement requires a name
- SyntaxError: functions cannot be labelled
- SyntaxError: getter and setter for private name #x should either be both static or non-static
- SyntaxError: getter functions must have no arguments
- SyntaxError: identifier starts immediately after numeric literal
- SyntaxError: illegal character
- SyntaxError: import declarations may only appear at top level of a module
- SyntaxError: incomplete quantifier in regular expression
- ReferenceError: invalid assignment left-hand side
- SyntaxError: invalid BigInt syntax
- SyntaxError: invalid capture group name in regular expression
- SyntaxError: invalid character in class in regular expression
- SyntaxError: invalid class set operation in regular expression
- SyntaxError: invalid decimal escape in regular expression
- SyntaxError: invalid identity escape in regular expression
- SyntaxError: invalid named capture reference in regular expression
- SyntaxError: invalid property name in regular expression
- SyntaxError: invalid range in character class
- SyntaxError: invalid regexp group
- SyntaxError: invalid regular expression flag "x"
- SyntaxError: invalid unicode escape in regular expression
- SyntaxError: JSON.parse: bad parsing
- SyntaxError: label not found
- SyntaxError: missing : after property id
- SyntaxError: missing ) after argument list
- SyntaxError: missing ) after condition
- SyntaxError: missing ] after element list
- SyntaxError: missing } after function body
- SyntaxError: missing } after property list
- SyntaxError: missing = in const declaration
- SyntaxError: missing formal parameter
- SyntaxError: missing name after . operator
- SyntaxError: missing variable name
- SyntaxError: negated character class with strings in regular expression
- SyntaxError: new keyword cannot be used with an optional chain
- SyntaxError: nothing to repeat
- SyntaxError: numbers out of order in {} quantifier.
- SyntaxError: octal escape sequences can't be used in untagged template literals or in strict mode code
- SyntaxError: parameter after rest parameter
- SyntaxError: private fields can't be deleted
- SyntaxError: property name __proto__ appears more than once in object literal
- SyntaxError: raw bracket is not allowed in regular expression with unicode flag
- SyntaxError: redeclaration of formal parameter "x"
- SyntaxError: reference to undeclared private field or method #x
- SyntaxError: rest parameter may not have a default
- SyntaxError: return not in function
- SyntaxError: setter functions must have one argument
- SyntaxError: unterminated string literal
- SyntaxError: super() is only valid in derived class constructors
- SyntaxError: tagged template cannot be used with optional chain
- SyntaxError: Unexpected '#' used outside of class body
- SyntaxError: Unexpected token
- SyntaxError: unlabeled break must be inside loop or switch
- SyntaxError: unparenthesized unary expression can't appear on the left-hand side of '**'
- SyntaxError: use of super property/member accesses only valid within methods or eval code within methods
- SyntaxError: Using //@ to indicate sourceURL pragmas is deprecated. Use //# instead
- ReferenceError: deprecated caller or arguments usage
- TypeError: 'x' is not iterable
- TypeError: "x" is (not) "y"
- TypeError: "x" is not a constructor
- TypeError: "x" is not a function
- TypeError: "x" is not a non-null object
- TypeError: "x" is read-only
- TypeError: already executing generator
- TypeError: BigInt value can't be serialized in JSON
- TypeError: calling a builtin X constructor without new is forbidden
- TypeError: can't access/set private field or method: object is not the right class
- TypeError: can't assign to property "x" on "y": not an object
- TypeError: can't convert BigInt to number
- TypeError: can't convert x to BigInt
- TypeError: can't define property "x": "obj" is not extensible
- TypeError: can't delete non-configurable array element
- TypeError: can't redefine non-configurable property "x"
- TypeError: can't set prototype of this object
- TypeError: can't set prototype: it would cause a prototype chain cycle
- TypeError: invalid 'in' operand "x"
- TypeError: class constructors must be invoked with 'new'
- TypeError: cyclic object value
- TypeError: derived class constructor returned invalid value x
- TypeError: getting private setter-only property
- TypeError: Initializing an object twice is an error with private fields/methods
- TypeError: invalid 'instanceof' operand 'x'
- TypeError: invalid Array.prototype.sort argument
- TypeError: invalid assignment to const "x"
- TypeError: Iterator/AsyncIterator constructor can't be used directly
- TypeError: matchAll/replaceAll must be called with a global RegExp
- TypeError: More arguments needed
- TypeError: "x" has no properties
- TypeError: property "x" is non-configurable and can't be deleted
- TypeError: Reduce of empty array with no initial value
- TypeError: setting a property that has only a getter
- TypeError: WeakSet key/WeakMap value 'x' must be an object or an unregistered symbol
- TypeError: X.prototype.y called on incompatible type
- URIError: malformed URI sequence
- Warning: -file- is being assigned a //# sourceMappingURL, but already has one
- Warning: unreachable code after return statement
- Divers
- Aperçu des technologies JavaScript
- Execution model
- Grammaire lexicale
- Protocoles d'itération
- Mode strict
- Gabarits de chaînes de caractères
- Virgules finales
- Fonctionnalités dépréciées
Tag » Apprendre Es6 Javascript
-
Apprendre JavaScript ES6 - Les Fondamentaux - Elephorm
-
Apprendre Le Développement Moderne Javascript ES6 7 En Ligne
-
Tirez Un Maximum De Ce Cours - Apprenez à Programmer Avec ...
-
Passez Au JavaScript Moderne ! Apprendre ES6, ES7 Et ES8 | Udemy
-
[PDF] Javascript ES6 De A à Z Cours Et Formation Gratuit - BestCours
-
Supports De Cours Gratuit Sur Javascript Es6 - Pdf - BestCours
-
ECMAScript 2015 — Formation Apprendre Le JavaScript | Grafikart
-
Javascript Moderne (ES6 - ES11) #1 Introduction Et Configuration ...
-
Tutoriel Javascript ES6 | Cours Complet Pour Débutants - Quish
-
JavaScript : Le Guide Ultime (ES6 Et ES7 Inclus) - Academia Raqmya
-
Enfin Apprendre Et Comprendre Le JavaScript !
-
Télécharger Cours Et Exercices Gratuit Javascript Es6 En PDF
-
JavaScript ES6 - Les Fondamentaux - Médiathèque Numérique Loire
-
10 Des Meilleurs Cours JavaScript En Français - Comment Coder