Function Declaration, Function Expression и изолированная область видимости
Function Declaration
Создаются ДО выполнения кода.
Пример функции Function Declaration:
javascript
Hello("привет");
function Hello(hi) {
alert(hi);
}
Function Expression
В отличие от объявлений Function Declaration, которые создаются заранее, до выполнения кода, объявления Function Expression создают функцию, когда до них доходит выполнение.
Вызывать функцию "на месте" можно только посредством Function Expression.
javascript
var f = function(параметры) {
// тело функции
};
Вызов функции на месте
javascript
var f = function() {
alert(1111);
}(); // 1111
// но лучше, для читаемости кода, вызвать так
// при помощи круглых скобок
var f = (function() {
alert(1111);
})();
Как браузер отличает Function Declaration от Function Expression
- Если браузер видит
functionв основном потоке кода - он считает, что этоFunction Declaration. - Если же
functionидёт в составе более сложного выражения, то он считает, что этоFunction Expression.
Создаем отдельную область видимости для предотвращения возможных конфликтов
И в этом нам поможет объявление Function Expression(круглые скобки говорят интерпритатору javascript, что перед ним выражение,
а поэтому функция внутри круглых скобок это Function Expression и ее можно вызвать на месте).
javascript
(function() {
var a = 11 , b = 22; // переменные для нашего скрипта
// код скрипта
})();
Теперь внутренние переменные скрипта стали локальными. Даже если в другом месте страницы объявлена своя переменная a —
проблем не будет. Наш скрипт теперь имеет свою, изолированную область видимости.
Замечательная статья на эту тему: Function Declaration и Function Expression

Комментарии к статье