Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Область видимости функции (https://javascript.ru/forum/jquery/14790-oblast-vidimosti-funkcii.html)

DenQ 31.01.2011 17:03

Область видимости функции
 
Привет всем! :)
В index.php подключается отдельный js файл, namefile.js, в котором имеем простую функцию:
$(document).ready(function() {
  function f(){
     alert('123');
  }
});

В index.php есть такой js код:
$(document).ready(function() {
  f();
});


Подскажите, как сделать, так чтобы функция f из namefile.js, вызвалась без ошибок в index.js?
Буду очень признателен, за помощь :)

PeaceCoder 31.01.2011 17:14

$(document).ready(function() {
 f = function(){
     alert('123');
  }
});

НО! f станет глобальной. Что может повлечь за собой проблемы в других местах разных функий.

Во вторых. Зачем вам использовать в индексе функцию которая подключается им же?

DenQ 31.01.2011 17:18

PeaceCoder, я специально существенно упросил код. Я бы конечно мог сделать функцию в index.php, но если я буду так делать, то это будет просто бардак. Мну нужно вызывать отдельные функции из разных подключаемых файлов, аккуратненько разложенных по всему проекту.
А как бы вы поступили?

PeaceCoder 31.01.2011 17:25

Цитата:

Сообщение от DenQ
А как бы вы поступили?

Ну так как и поступаю сейчас. стати такая проблема сейчас во всех современных цмс. Подключая модуль - он гадит в глобал.
Выделите какуюто переменную например INCS. Она единственная будет глобальной. А в подключаемых файлах присоединяйте все функции/данные к ней. При этом у Вас будет доступ к ним, а они в свою очередь не будут гадить в глобал. Все красиво и аккуратно

Skipp 31.01.2011 17:48

для этого в файле namefile.js уберите обработчик события
$(document).ready(function() {
  function f(){
     alert('123');
  }
});

и сделайте просто
function f(){
     alert('123');
  }

DenQ 31.01.2011 18:02

Skipp, я не просто так беру функции в "обертку" jquery.

micscr 02.02.2011 09:05

Цитата:

Сообщение от DenQ (Сообщение 90581)
Skipp, я не просто так беру функции в "обертку" jquery.

а зачем? Она тогда и будет видима внутри этой обертки. Варианты решения - выше

DenQ 02.02.2011 14:21

Цитата:

Сообщение от micscr
а зачем?

Что бы использовать функционал jQuery. Повторюсь, я специально существенно упростил код.

Skipp 02.02.2011 16:28

какой ещё функционал???
у вас функция вызывается до её создания, что тут упрощаете вы?

micscr 02.02.2011 16:42

Цитата:

Сообщение от DenQ (Сообщение 90803)
Что бы использовать функционал jQuery. Повторюсь, я специально существенно упростил код.

в смысле не приводишь всего, чтоб мы поняли? Выкладывай, мы не пугливые. :)


Часовой пояс GMT +3, время: 21:28.