Показать сообщение отдельно
  #6 (permalink)  
Старый 23.08.2010, 01:13
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

RobertoCavali, сбавьте тон, это же основы, читайте теорию.

В JavaScript только функции создают свою область видимости переменных:

var x; // доступна везде

function f() {
    var y; // доступна только внутри f
}

f();


Чтобы в глобальную область видимости не попали переменные, используемые только библиотекой, её полностью оборачивают в функцию, которую сразу же выполняют:
function f() {
  var … // переменные, используемые только библиотекой
}

f();


В JavaScript есть несколько видов функций. Для FunctionExpression не обязательно указывать имя функции, но чтобы интерпретатор воспринял её, как FE, нужно какое-то выражение, например присваивание:
var f = function () {
  var … // переменные, используемые только библиотекой
};

f();

Но тут опять же в глобальной области видимости будет ненужная переменная f. Поэтому используют выражение группировки (скобочки), результатом выполнения которого будет ссылка на только что созданную анонимную функцию:
alert(typeof (function () {}))

которую можно сразу же вызвать:
(function () {
  var … // переменные, используемые только библиотекой
})();

(alert)(1);
(function () { alert(2) })();
(function () { alert(3) }());
+function () { alert(4) }();

Последний раз редактировалось Octane, 23.08.2010 в 01:25.
Ответить с цитированием