Javascript: переменные просачиваются в глобальную область (аддон Firefox) - PullRequest
1 голос
/ 07 июля 2011

Я отправил свое дополнение в директорию AMO, и редактор вернулся с этим:

There are still a number of variables being leaked to the global scope, 
probably because you're using them undeclared like...

Он не упомянул все переменные проблемы, есть ли вообще знать, которые находятся в глобальной области видимости / утечки?

У меня есть куча переменных, и через каждую из них нужно пройти целую вечность, чтобы убедиться, что они были правильно объявлены с помощью "var".

Пожалуйста, помогите!

Спасибо!

Ответы [ 3 ]

5 голосов
/ 08 июля 2011

Если вы пытаетесь отследить переменные, которые могли быть неявно объявлены как глобальные из-за пропуска var, вы можете запустить код в strict mode. Это даст вам ReferenceError, если вы попытаетесь использовать переменные, которые не были объявлены свойством.

(function() {

    "use strict";   // <-- this runs code inside this function in strict mode

    // your code...

    test = 'tester';  // gives a ReferenceError

})();

Вам нужно будет запустить его в поддерживаемом браузере, например Firefox 4 или выше. Декларативная "use strict"; гарантирует, что любой код внутри функции будет оцениваться с использованием правил строгого режима.

0 голосов
/ 08 июля 2011

Используйте firefox с firebug , добавьте точку останова в подходящее место и наблюдайте объект "окна", все переменные в глобальной области видимости являются его членами.

0 голосов
/ 07 июля 2011

Помимо правильного использования ключевого слова var, вы должны убедиться, что весь ваш javascript обернут в функцию, подобную этой:

(function(){
    //Your code
}());

Это сохраняет все ваши переменные в области действия немедленно вызываемой функции.*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...