[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Operators/Assignment [Back]  [Original]

Affectation (=) - JavaScript | MDN

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

Affectation (=)

Baseline
Large disponibilit

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.

Dans cet article

Exemple interactif

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

Syntaxe

js
x = y

Paramtres

x

Une cible d'affectation valide, y compris un identifiant ou un accs une proprit. Cela peut galement tre un modle de dstructuration.

y

Une expression dfinissant la valeur assigner x.

Valeur de retour

La valeur de y.

Exceptions

ReferenceError

Leve en mode strict si l'on assigne un identifiant qui n'est pas dclar dans la porte.

TypeError

Leve en mode strict si l'on assigne une proprit qui n'est pas modifiable.

Description

L'oprateur d'affectation est compltement diffrent du signe gal (=) utilis comme sparateur syntaxique dans d'autres contextes, qui incluent :

Tous ces endroits acceptent une expression d'affectation sur le ct droit du =, donc si vous avez plusieurs signes gaux enchans :

js
const x = y = 5;

C'est l'quivalent de :

js
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 :

js
const x = 5,
  y = 5;

Exemples

Affectation simple et variables chanes

js
let x = 5;
let y = 10;
let z = 25;

x = y; // x vaut 10
x = y = z; // x, y et z valent toutes 25

Valeur des expressions d'affectation

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.

js
let x;
console.log(x); // undefined
console.log(x = 2); // 2
console.log(x); // 2

Affectation un identifiant non qualifi

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 :

js
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.

js
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.

Affectation avec dstructuration

Le ct gauche peut galement tre un modle d'affectation. Cela permet d'affecter plusieurs variables en mme temps.

js
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.

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# sec-assignment-operators

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page