| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Operators/Assignment | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
Cette fonctionnalit est bien tablie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
L'oprateur d'affectation (=) est utilis pour assigner une valeur une variable ou une proprit. L'expression d'affectation elle-mme a une valeur, qui est la valeur assigne. Cela permet de chaner plusieurs affectations afin d'assigner une seule valeur plusieurs variables.
let x = 2;
const y = 3;
console.log(x);
// Rsultat attendu : 2
console.log((x = y + 1)); // 3 + 1
// Rsultat attendu : 4
console.log((x = x * y)); // 4 * 3
// Rsultat attendu : 12
x = y
xUne cible d'affectation valide, y compris un identifiant ou un accs une proprit. Cela peut galement tre un modle de dstructuration.
yUne expression dfinissant la valeur assigner x.
La valeur de y.
ReferenceErrorLeve en mode strict si l'on assigne un identifiant qui n'est pas dclar dans la porte.
TypeErrorLeve en mode strict si l'on assigne une proprit qui n'est pas modifiable.
L'oprateur d'affectation est compltement diffrent du signe gal (=) utilis comme sparateur syntaxique dans d'autres contextes, qui incluent :
var, let et constTous ces endroits acceptent une expression d'affectation sur le ct droit du =, donc si vous avez plusieurs signes gaux enchans :
const x = y = 5;
C'est l'quivalent de :
const x = (y = 5);
Ce qui signifie que y doit tre une variable prexistante, et que x est une nouvelle variable const. y se voit assigner la valeur 5, et x est initialise avec la valeur de l'expression y = 5, qui est galement 5. Si y n'est pas une variable prexistante, une variable globale y est implicitement cre en mode non strict, ou une ReferenceError est leve en mode strict. Pour dclarer deux variables dans la mme dclaration, utilisez :
const x = 5,
y = 5;
let x = 5;
let y = 10;
let z = 25;
x = y; // x vaut 10
x = y = z; // x, y et z valent toutes 25
L'expression d'affectation elle-mme est value la valeur du ct droit, vous pouvez donc enregistrer la valeur et l'affecter une variable en mme temps.
let x;
console.log(x); // undefined
console.log(x = 2); // 2
console.log(x); // 2
L'objet global se trouve en haut de la chane de porte. Lorsqu'on tente de rsoudre un nom en une valeur, la chane de porte est parcourue. Cela signifie que les proprits de l'objet global sont facilement visibles depuis chaque porte, sans avoir qualifier les noms avec globalThis. ou window. ou global..
Comme l'objet global possde une proprit String (Object.hasOwn(globalThis, "String")), vous pouvez utiliser le code suivant :
function toto() {
String("s"); // La fonction `String` est globalement disponible
}
Ainsi, l'objet global est finalement recherch pour les identifiants non qualifis. Vous n'avez pas taper globalThis.String ; vous pouvez simplement taper String non qualifi. Pour rendre cette fonctionnalit plus cohrente sur le plan conceptuel, l'affectation des identifiants non qualifis suppose que vous souhaitez crer une proprit portant ce nom sur l'objet global (avec globalThis. omis), s'il n'existe pas de variable du mme nom dclare dans la chane de porte.
toto = "t"; // En mode non strict, suppose que vous voulez crer une proprit nomme `toto` sur l'objet global
Object.hasOwn(globalThis, "toto"); // true
En mode strict, l'affectation un identifiant non qualifi en mode strict entrane une ReferenceError, afin d'viter la cration accidentelle de proprits sur l'objet global.
Notez que l'implication de ce qui prcde est que, contrairement une ide reue, JavaScript n'a pas de variables implicites ou non dclares. Il confond simplement l'objet global avec la porte globale et permet d'omettre le qualificateur de l'objet global lors de la cration de proprits.
Le ct gauche peut galement tre un modle d'affectation. Cela permet d'affecter plusieurs variables en mme temps.
const resultat = /(a+)(b+)(c+)/.exec("aaabcc");
let a = "",
b = "",
c = "";
[, a, b, c] = resultat;
console.log(a, b, c); // "aaa" "b" "cc"
Pour plus d'informations, voir Dstructuration.
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-assignment-operators |
Cette page a t modifie le 5 sept. 2026 par les contributeurices du MDN.
Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |