Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Области видимости переменных и функций (https://javascript.ru/forum/misc/55475-oblasti-vidimosti-peremennykh-i-funkcijj.html)

rgba 29.04.2015 14:26

Области видимости переменных и функций
 
Здравствуйте.
Вопрос по самым основам. У меня есть несколько функций, и мне необходима переменная, которая должна быть доступна для всех этих функций.
var a = 5;

myFunc(){
    //... do something
}

myFunc();

Теперь я хочу, чтобы переменная a была локальной.
(function(){
    var a = 5;

    myFunc(){
        //... do something
    }
})();

myFunc();


Но теперь вызов myFunc() не работает, получаю ошибку, что функция не объявлена.
Как мне получить локальную переменную и работоспособный код?

Erolast 29.04.2015 15:41

Что в четвертой строке происходит?

rgba 29.04.2015 15:58

Цитата:

Сообщение от Erolast (Сообщение 368702)
Что в четвертой строке происходит?

я там не дописал, извиняюсь.
(function(){
    var a = 5;

    myFunc(b){
        a = b;
    }
})();

myFunc(1);

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

Erolast 29.04.2015 16:08

Повторяю вопрос - что происходит в четвертой строке? Это что вообще такое? Объявление или вызов?

rgba 29.04.2015 16:17

Цитата:

Сообщение от Erolast (Сообщение 368710)
Повторяю вопрос - что происходит в четвертой строке? Это что вообще такое? Объявление или вызов?

Объявление, теперь увидел, что я еще и function пропустил.

nondeterminism 29.04.2015 17:30

var a = 5;
myFunc=function(){
    alert(a)
}
 
myFunc();

(function(){
    var a = "inner";
    var myFunc=function(){alert(a)}
    myFunc()
})();
 
// ::: 5
// ::: inner


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