Разделы

2.7.1. Объявление функций

Синтаксис объявления функции:

function func(arg1,arg2){
//body
};

Вариант присваивания переменной:

$func = function (arg1,arg2){
//body
};

Присваивание значения функции переменной является составным выражением и по сути является самостоятельной конструкцией.
Функция может создаваться внутри функции и так далее.
Каждая функция имеет свое имя, и только одна функция может быть присвоена одной переменной.
Имена аргументов функции должны быть уникальны в пределах этой функции.
Объявление функции - исполняемая операция, поэтому результатом будет объект функции со всеми необходимыми данными и скомпилированным телом исполнения.
Возвращать функция может только одно значение.
Аргументы функции инициализируются при ее вызове.
Аргументы в функции передаются по ссылке, то есть можно записывать результат работы непосредственно в аргументы, и это будет доступно вне функции, там где значения переданные аргументам будут доступны. Однако записывать в языковые данные - нельзя.
Пример недопустимого кода:

function qwert(a1,a2){
    a1 = 10;a2 = 20;
}

qwert(1,2);