Jump to content
  • 0

Глобальные переменные для несколькоъ функций


DjTarik
 Share

Question

Возможно вопрос нубский, но:

Пример:

У меня есть файлик со скриптами (в нём все скрипты, которые используются на сайте).

Там скрипты для галереи, форм и т.д.

Соответственно, очень много разных функций.

Для скриптов формы я использую всего 2 функции, причем есть одинаковые переменные с одинаковыми значениями.

Вопрос:

Если я сделаю эти переменные глобальными, могу ли я как-нибудь задать область видимости для них так, чтобы их можно было использовать только в этих двух функциях? O_o

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

P.S. Надеюсь понятно объяснил)

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0

Да нету файликов... Примерно так:

onload = function ()
{
Function_1 ();
}

Function_1 ()
{
var obj;
var name;
Function_2 ();
}

Function_2 ()
{
var obj;
var name;
}

Function_3 ()
{
var obj;
var name;
var other;
}

Function_4 ()
{
var id;
var obj;
var name;
var back;
var other;
}

Тут переменные "obj" и "name" используются в функциях 1, 2 и 3, 4. Могу ли сделать эти переменные глобальными, но чтобы они были доступны только в функциях 1 и 2, а в 3 и 4 - устанавливались заново?

P.S. Сначала хотел сделать их просто глобальными, а в нужных функциях использовать VAR - но это неудобно, т.к. функций может быть очень много и не хочется каждый раз следить за тем, чтобы переменные переопределять... =(

Link to comment
Share on other sites

  • 0

Очень не советую давать одинаковые имена глобальным и локальным переменным, JS то не перепутает, а человек запутается в конец! Назовите глобальные как-нибудь objGlobal и nameGlobal, меньше потом проблем будет, особенно при большом коде и с такой вложенностью... Да и не понятно зачем вам там одинаковые имена? Править неохота? :blink:

Link to comment
Share on other sites

  • 0
Я думаю, что глобальные переменные будут доступны всем, потому-что находятся в общем объекте.

А если как-нить обернуть их в пустую функцию?

Очень не советую давать одинаковые имена глобальным и локальным переменным, JS то не перепутает, а человек запутается в конец! Назовите глобальные как-нибудь objGlobal и nameGlobal, меньше потом проблем будет, особенно при большом коде и с такой вложенностью... Да и не понятно зачем вам там одинаковые имена? Править неохота? :blink:

Вот и я про то же.

Мне просто удобно, когда переменные названы семантически, и если они выполняют одну и ту же функцию, то я их и называю одинаково.

В моём случае, они для двух функций делают одно и тоже - вот я и хотел их вынести за функции - и кода меньше, и писать одно и то же не придётся...

Так нельзя?

Link to comment
Share on other sites

  • 0
А если как-нить обернуть их в пустую функцию?

Глобальные переменные на то и глобальные, что оборачивай, не оборачивай, они будут все равно глобальными.

Вот и я про то же.

Мне просто удобно, когда переменные названы семантически, и если они выполняют одну и ту же функцию, то я их и называю одинаково.

В моём случае, они для двух функций делают одно и тоже - вот я и хотел их вынести за функции - и кода меньше, и писать одно и то же не придётся...

Так нельзя?

Покажи задачу, где тебе такое понадобится.

Link to comment
Share on other sites

  • 0
Глобальные переменные на то и глобальные, что оборачивай, не оборачивай, они будут все равно глобальными.

Я имею ввиду, если я оберну две своих функции в пустую (к примеру, я просто не знаю, можно ли так делать) - а уже в ней задам глобальную переменную - она будет глобально работать только в функции обертке и во всех внутренних функциях...

Так как-нить можно?

Покажи задачу, где тебе такое понадобится.

Ну, пока это только в теории...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy