Maison >interface Web >js tutoriel >Explication détaillée des fonctions et des effets secondaires de l'instruction with en JavaScript

Explication détaillée des fonctions et des effets secondaires de l'instruction with en JavaScript

伊谢尔伦
伊谢尔伦original
2017-07-25 14:05:511571parcourir

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn