web-dev-qa-db-fra.com

Chrome console claire affectation et variables

J'apprends JavaScript et j'ai fait beaucoup de tests dans la console Chrome. Même si j'efface la console ou utilise l'une des commandes que j'ai vues dans d'autres threads (localStorage.clear()) toutes les variables que j'ai assignées apparaissent toujours.

Par exemple, si je fais quelque chose comme var name = "Bob";

enter image description here

J'efface et ferme la console, la rouvre et cherche la valeur de name, c'est toujours Bob.

enter image description here

Quelle est la meilleure façon de les éliminer?

39
spex5

Ce que vous affectez lorsque vous déclarez des variables ou des fonctions dans la console du développeur, c'est le contexte d'exécution global , qui pour les navigateurs Web est window .

Lorsque vous clear() la console que vous dites Chrome pour supprimer tout visible historique de ces opérations, ne pas effacer les objets que vous avez attachés à window.

Pour ce faire, vous devez manuellement delete chaque objet par sa référence:

delete name;
name //=> undefined

Si le surcoût lié à la suppression répétée de plusieurs objets via delete est trop important, stockez chaque valeur en tant que propriété d'un objet, par ex. data, que vous pouvez supprimer avec toutes les propriétés dans une seule instruction:

var data = {};
data.name = 'Bob';
data.age = 60;
delete data;
data.name //=> ReferenceError: data is not defined
data.age //=> ReferenceError: data is not defined
33
sdgluck

Une solution simple à ce problème consiste à encapsuler tout code que vous ne voulez pas dans la portée globale dans une expression de fonction immédiatement invoquée (IIFE). Toutes les variables affectées dans la portée de la fonction sont désallouées à la fin de la fonction:

(function() {

    // Put your code here...

})();

Pour plus d'informations sur les IIFE: https://en.wikipedia.org/wiki/Immediately-invoked_function_expression

[Mise à jour]

Dans ES6, vous pouvez utiliser des blocs (tant que vous utilisez let au lieu de var):

{

    // Put your code here...

}

Pour plus d'informations sur les blocs: http://exploringjs.com/es6/ch_core-features.html#sec_from-iifes-to-blocks

26
pjivers

L'effacement de la console n'efface pas les variables de la mémoire, mais efface simplement les données de l'interface utilisateur.

Le rechargement de la page efface les données de la console. J'espère que cela devrait être bien car vous avez mentionné que vous testez et apprenez simplement le javascript.

J'espère que ça t'as aidé!

7
hkasera

Il suffit de recharger pour un nouveau contexte avec un historique clair et l'exécution d'anciennes commandes

Les choses ont beaucoup changé sur chrome dev tools. delete name n'aide pas;

//for example if you have declared a variable 
`const x = 2;`
 //Now sometime later you want to use the same variable 
`const x = 5` you will get an error 
//if you try to delete it you will get false
delete x;

Mais un rechargement de page alors que la console est encore ouverte. va actualiser le contexte de la console et maintenant le x n'est pas disponible et vous pouvez le redéfinir. J'espère que cela aide quelqu'un à tester ou à essayer des choses sur la console de chrome. Je l'utilise beaucoup.

4
Tarandeep Singh
Console.clear()

Utilisez cette commande dans la console de votre navigateur et voyez la magie, très pratique à utiliser et fonctionne parfaitement selon les meilleures pratiques d'utilisation de la console chrome,

0
user2841183

Si vous souhaitez supprimer cette variable,

delete name;
0
user2879041