Ce sont ces recherches et tests aveugles et sans principes qui m'ont fait évanouir. Est-il nécessaire de faire cela? En fait, il n'est pas nécessaire de faire autant de tests après avoir compris les principes, puis établir les règles. Les règles ECMAScript ont été définies.
La règle de VAR est: utilisez VAR pour déclarer une variable qui est une variable interne, sinon il s'agit d'abord d'appeler la variable globale, peu importe le nombre de couches de fonctions.
La règle de ceci est: celle-ci dans la fonction de la méthode pointe toujours vers elle-même, et cela dans la fonction ordinaire pointe toujours vers Domwindow.
// goddamntest1Function foo () {var a = 123; // Variable locale, variables globales de toutes les sous-fonctions this.a = 456; // propriété d'objet (fonction () {alert (a); // 123, alert global (this.a); // non défini, fonction normale, ce point à domwindow}) (); } var f = new foo (); // goddamntest2function foo () {var a = 123; this.a = 456; (fonction (a) {// Alerte de déclaration locale (a); // 456, le global est remplacé par un localement déclaré par la fonction}) (this.a); } var f = new foo (); // goddamntest3Function foo () {var a = 123; this.a = 456; (function () {alert (a); // 123, alert global (this.a); // undefined, domwindow this.b = 789; // window.b = 789}) (); (function () {alert (this.b); // 789, window.b}) (); } var f = new foo (); (function () {alert (this.b); // 789, window.b}) (); // goddamntest4Function foo () {(function () {this.b = 789; // window.b = 789}) (); (function () {alert (this.b); // 789, window.bvar b = 0; alert (b); // 0, un tel test a été écrit!}) (); } var f = new foo (); (function () {alert (this.b); // 789, window.balert (b); // 789, window.b}) ();Étonnamment, la dernière alerte (b) a toujours abouti à 789. // Pas de surprise du tout!
// goddamntest5Function foo () {(function () {this.b = 789; // window.b = 789}) (); (function () {alert (this.b); // 789, window.balert (b); // undefined, global var b = 0; alert (b); // 0, il y a aussi un tel test!}) (); } var f = new foo (); (function () {alert (this.b); // 789, window.balert (b); // 789, window.b}) ();PS: Méthode JS pour supprimer les variables locales
alert ('value:' + str + '/ ttype:' + typeof (str)) // Avant de déclarer la variable, reportez-vous à var str = "dd"; alert ('value:' + str + '/ ttype:' + typeof (str)) // Après la déclaration et l'attribution de la variable, se référer à Str = indéfinie; // Supprimer l'alerte de variable locale ('valeur:' + str + '/ ttype:' + typeof (str)) // Après avoir annulé la variable, reportez-vous à Str = Undefined, comme le premierCe qui précède est la dernière analyse des variables mondiales JS et des variables locales qui vous sont présentées par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!