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

with - 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

with

Obsolte

vitez d'utiliser cette fonctionnalit dans de nouveaux projets. JavaScript strict mode prohibits the with statement. Cette fonctionnalit peut tre candidate la suppression des standards web ou des navigateurs.

Envisagez d'utiliser plutt les fonctionnalits suivantes : Destructuring.

Attention : Il n'est pas recommand d'utiliser l'instruction with. En effet, elle est parfois source de problmes de compatibilit ou de bogues. Se rfrer au paragraphe Inconvnient : l'ambigut de la section Description pour plus de dtails.

L'instruction with permet d'tendre la porte chane d'une instruction.

Dans cet article

Syntaxe

js
with (expression) {
  instruction;
}
expression

L'expression fournie est ajoute la porte chane utilise lors de l'valuation de l'instruction. Les parenthses sont obligatoires.

instruction

N'importe quelle instruction. Afin d'utiliser plusieurs instructions, on peut utiliser un bloc d'instructions ({ ... }) pour les regrouper.

Description

Ds qu'un nom non-qualifi est utilis, JavaScript cherche dans la chane des portes associe l'excution une fonction ou un script qui contiendrait ce nom. L'instruction with ajoute l'objet donn la tte de la chane des portes lors de l'valuation des instructions qu'elle contient. Si un nom non-qualifi est utilis parmi ces instructions correspond une proprit de la chane des portes, le nom sera alors li la proprit et l'objet contenant cette proprit, sinon une erreur ReferenceError est renvoye.

Note : L'utilisation de l'instruction with n'est pas recommande et est interdite dans le mode strict d'ECMAScript 5. L'alternative recommande est d'assigner l'objet utilisant les proprits dsires une variable temporaire.

Avantages et inconvnients : les performances

  • Avantage : l'instruction with permet de rduire la taille d'un fichier en rduisant la rptition d'un objet dont la dnomination est longue, et ce sans qu'il y ait d'impact sur les performances. Le changement apport la chane des portes ne reprsente pas un ajout de complexit important. Utiliser l'instruction de with soulagera l'interprteur lors de l'analyses des rfrences objets potentiellement longues. On notera que l'alternative prsente ci-dessus permet galement d'aboutir ces avantages.
  • Inconvnient : en utilisant with, l'objet spcifi sera utilis chaque fois en premier lors de la recherche des noms. Ainsi, tous les identifiants qui ne sont pas des membres de l'objet donn l'instruction seront trouvs plus lentement. Quand il s'agit d'obtenir de bonnes performances, l'instruction with devrait seulement tre utilise pour englober des fragments de codes o il n'y a que des accs des membres de l'objet spcifi.

Inconvnient : l'ambigut

  • Inconvnient : l'instruction with peut rendre plus complique, que ce soit pour un humain ou un compilateur, la recherche d'un nom non-qualifi le long de la chane des portes. Ainsi, avec cet exemple :

    js
    function f(x, o) {
      with (o) console.log(x);
    }
    

    ce n'est que quand f est appele que x est trouv ou non, s'il est trouv partir de o ou (si o n'a pas de telle proprit) dans l'objet d'activation de f o x reprsente le premier argument de la fonction. Si x n'est pas dfini dans l'objet pass en second argument, il n'y aura pas d'erreur renvoye, juste des rsultats imprvus.

  • Inconvnient : Du code utilisant l'instruction with pourrait ne pas tre compatible dans le futur, en particulier lorsqu'il est utilis avec autre chose qu'un objet simple. Par exemple :

    js
    function f(toto, values) {
      with (toto) {
        console.log(values);
      }
    }
    

    Si vous appelez f([1,2,3], obj) dans un environnement ECMAScript 5, la rfrence values l'intrieur de l'instruction with sera lie avec obj. Cependant, ECMAScript 2015 (ES6) a introduit une proprit values pour Array (afin qu'elle soit disponible pour chaque tableau). Dans un environnement ECMAScript 2015, la rfrence values utilise l'intrieur de l'instruction with sera rsolue avec [1,2,3].values.

Exemples

Utiliser with

L'instruction with suivante indique que l'objet Math est l'objet par dfaut. Les instructions qui suivent font rfrence la proprit Math.PI et aux mthodes Math.cos() et Math.sin(), sans objet spcifi. JavaScript utilise donc l'objet Math pour ces rfrences.

js
var a, x, y;
var r = 10;

with (Math) {
  a = PI * r * r;
  x = r * cos(PI);
  y = r * sin(PI / 2);
}

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# sec-with-statement

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page