jquery и глобальные переменные

pilot911

Новичок
jquery и глобальные переменные

есть код

PHP:
var tA = new Array(); 

$('#smth').each(function (i) { console.debug(tA); });
дебаггер выводит ошибку, что tA is undefined


можно ли внутри jquery обратиться к глобальной переменной ?
 

dimagolov

Новичок
кстати, вот что я заметил, так или сам FF, или Firebug крайне нехорошо реагировали (скрипт или тормозил или вообще дох тихонько) при обращениях к объектам в глобальной области видимости. То есть в тех ф-ях, где по ошибке забыли поставить var предед именем локальной переменной получались жуткие тормоза. Особенно если декларация ф-ии имела значительную вложенность.

Тут надо сказать, что такого понятия как "глобальные переменные" в JS нету. В JS есть понятие области видимости, причем области видимости вложены. Если у нас есть декларация
PHP:
var val= 1;
function a () {
   ...
   function b() {
      ....
      function c() {
          ....
          val++;
      }
      .....
      c();
   }
    ....
    b();
}
то в момент вызова c() в начале val будет искаться в области видимости ф-ии c(), потом, не найдясь там в ф-ии b(), затем a() и только потом в области видимости window, где и будет обнаружен. если бы декларация var val= 1; отсутствовала, то не обнаружив переменную var в window интерпретатор бы создал ее там. То есть каждое обращение к "глобальной" переменной на самом деле запускает ее поиск в цепочке областей видимости. Кстати, обратите внимание, цепочка зависит от вложенности декларация, а не вызовов. То есть, если бы мы возвратили ссылку на ф-ю c() по цепочти из b() в a() а из a() в код в контексте window, то при ее вызове из глобального контекста поиск переменных все равно шел бы по цепочке c->b->a->window, что позвоняет объявить эмулировать "приватные" свойства объектов.
 
Сверху