Существует два вида использования этой конструкции:
объявление функции
function func(a){ ... }
присвоение анонимной функции
var func = function(a){ ...}
Их отличие - в области видимости. Присвоенная анонимная функция видна с момента присвоения, а объявленная явно - везде:
Пример: видимость функций
Выделить все
// функции определены нижеalert(decl)// функция видна, все окalert(anon)// функция еще не определена - ошибка// сами функции function decl(a){}var anon = function(a){}
Функция, объявленная внутри другой функции, видит переменные внешней функции. Они доступны ей даже тогда, когда родительская функция завершила исполнение. Это называется замыканием.
Значение возвращается оператором return. Функции без return или с return без значения возвращают undefined.
В теле функции доступна специальная переменная arguments, которая содержит параметры и ссылку на объект, представляющий собой текущую функцию (в javascript функции - объекты класса Function):