| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Statements/with | [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.
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.
with (expression) {
instruction;
}
expressionL'expression fournie est ajoute la porte chane utilise lors de l'valuation de l'instruction. Les parenthses sont obligatoires.
instructionN'importe quelle instruction. Afin d'utiliser plusieurs instructions, on peut utiliser un bloc d'instructions ({ ... }) pour les regrouper.
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.
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.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'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 :
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 :
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.
withL'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.
var a, x, y;
var r = 10;
with (Math) {
a = PI * r * r;
x = r * cos(PI);
y = r * sin(PI / 2);
}
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-with-statement |
Cette page a t modifie le 22 mai 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 |