Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   вопрос про создание переменной (https://javascript.ru/forum/misc/21300-vopros-pro-sozdanie-peremennojj.html)

Gamestop 04.09.2011 18:15

вопрос про создание переменной
 
Люди я вот в примерах и во фреймворках вижу такую вещь

var a = ( function() {

ну и тут какой-нибудь код

})

я понимаю если напишут вот так

var b = {} - создаётся обьект

а первый пример что значит?

что если я напишу вот так

var a = function() {

код

}

в чём-же разница, несмог найти ответ на этот вопрос, словарный запас короткий

Андрей Параничев 04.09.2011 18:37

Не так пишут, а вот так:
var a = (function() {
    // ну и тут какой-нибудь код
    return foo; // что-то, например функцию;
})();


С помощью такой конструкции можно объявить замыкание и сразу его запустить. Обычно это делается с целью ограничить внутреннюю область видимости в части скрипта, например для задания псевдо-приватных свойств объекта. Первые скобки просто оборачивают выражение функции, как можно обернуть (3+4) выражение, а вторые скобки вызывают это замыкание без параметров.

monolithed 04.09.2011 21:48

т.к. это Function Expression, можно и так:
var a = function(foo) {
    alert(foo);
}(1); //arguments assignment and calling


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

аналогично, можно вызвать фабрику, вообще без "скобок"
var a = new function() {
    alert(1);
};


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