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
Комментарии к статье