Le but de la définition de l'instruction with est principalement de simplifier le travail d'écriture du même objet plusieurs fois
L'instruction with ajoute l'objet à la tête de la chaîne de portée, puis exécute l'instruction, et enfin restaure la chaîne de portées à son état d'origine
with(object){ statement; }
Fonction
Habituellement utilisée lorsque l'objet le niveau d'imbrication est très profond avec une instruction pour simplifier l'écriture de code. Essentiellement, une nouvelle portée lexicale
est créée en traitant la référence d'un objet comme une portée et les propriétés de l'objet comme des identifiants dans la portée. En JavaScript côté client, vous pouvez utiliser des expressions telles que. ce qui suit pour accéder aux éléments d'un formulaire HTML
document.forms[0].address.value
Si cette expression apparaît plusieurs fois dans le code, vous pouvez utiliser l'instruction with pour L'objet formulaire est ajouté au niveau supérieur de la chaîne de portée
with(document.forms[0]){ name.value = ''; address.value = ''; emai.value = ''; }
Cette méthode réduit beaucoup de saisie et il n'est pas nécessaire d'ajouter le préfixe document.forms[0] à chaque nom d'attribut. Cet objet est temporairement monté sur la chaîne de portée. Lorsque JavaScript doit analyser un identifiant tel que l'adresse, il recherchera automatiquement
dans cet objet [Note] L'instruction with fournit un moyen de lire A. raccourci pour les propriétés d'un objet, mais il ne peut pas créer les propriétés d'un objet
Si l'objet o a un attribut x, alors le code suivant attribue la valeur de 1 à cet attribut
var o = {x:0}; with(o) x = 1; console.log(o.x);//1
Si l'attribut x n'est pas défini dans o, le code suivant est exactement le même que le code x=1 sans utiliser l'instruction with. En effet, une requête LHS est effectuée sur la variable. L'optimisation rendra également difficile le débogage du code, et elle fonctionnera plus lentement que le code sans utiliser l'instruction with
var o = {}; with(o) x = 1; console.log(o.x);//undefined console.log(x);//1
De plus, si l'instruction with est incorrect, cela peut provoquer une fuite variable. Pollution de la portée globale
Mode strict
En mode strict, il est interdit d'utiliser l'instruction with
var x = 1; var o = {}; with(o){ x = 2; } console.log(x);//2 console.log(o.x);//undefined
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!