Именно это слепое и беспринципное исследование и тестирование заставило меня обморозить. Нужно ли это сделать? На самом деле, нет необходимости делать так много тестов после понимания принципов, а затем наносить правила. Правила Ecmascript были определены.
Правило VAR: используйте VAR, чтобы объявить переменную, которая является внутренней переменной, в противном случае он должен сначала вызвать глобальную переменную, независимо от того, сколько слоев функций.
Правило этого: это в функции метода всегда указывает на себя, и это в обычной функции всегда указывает на Domwindow.
// addamntest1function foo () {var a = 123; // локальная переменная, глобальные переменные всех подфункций this.a = 456; // свойство объекта (function () {alert (a); // 123, Global Alert (this.a); // не определенная, нормальная функция, эта точка Domwindow}) (); } var f = new foo (); // addamntest2function foo () {var a = 123; this.a = 456; (function (a) {// локальное объявление оповещение (a); // 456, глобальный переопределяется локально объявленной функцией}) (this.a); } var f = new foo (); // addamntest3function foo () {var a = 123; this.a = 456; (function () {alert (a); // 123, глобальное оповещение (this.a); // не определен, 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}) (); // addamntest4function foo () {(function () {this.b = 789; // window.b = 789}) (); (function () {alert (this.b); // 789, window.bvar b = 0; alert (b); // 0, такой тест был записан!}) (); } var f = new foo (); (function () {alert (this.b); // 789, window.balert (b); // 789, window.b}) ();Удивительно, но последнее предупреждение (B) все еще привело к 789 году. // Вообще нет чертового сюрприза!
// addamntest5function foo () {(function () {this.b = 789; // window.b = 789}) (); (function () {alert (this.b); // 789, window.balert (b); // не определен, глобальный var b = 0; alert (b); // 0, есть также такой тест!}) (); } var f = new foo (); (function () {alert (this.b); // 789, window.balert (b); // 789, window.b}) ();PS: JS Метод удаления локальных переменных
alert ('value:'+str+'/ttype:'+typeof (str)) // Перед объявлением переменной см. В var str = "dd"; alert ('value:'+str+'/ttype:'+typeof (str)) // после объявления и назначения переменной, см. str = undefined; // Удалить Alert локальной переменной ('value:'+str+'/ttype:'+typeof (str)) // после отмены переменной, см.Выше приведено последний анализ глобальных переменных JS и локальных переменных, представленных вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!