===== Функции =====

<code php>
# Функция с определенным кол-вом параметров
function f(a, b, c, d) { console.log(a + b + c + d) }

# Обычный способ вызова
f(1, 2, 3, 4);

# f.call()
# Метод call жёстко фиксирует количество аргументов, через запятую
f.call(context, 1, 2, 3, 4);

# Вызов функции при помощи func.apply работает аналогично func.call, но принимает массив аргументов вместо списка:
f.apply(context, [1, 2, 3, 4]);
</code>

При помощи call/apply можно легко взять метод одного объекта, в том числе встроенного, и вызвать в контексте другого.

<code php>
function sayHi() {

  # Используем эту технику для упрощения манипуляций с arguments. Как мы знаем, это не массив, а обычный объект.. Но как бы хотелось вызывать на нём методы массива.
  arguments.join = [].join; // одолжили метод (1)

  var argStr = arguments.join(':');  // (2)

  alert(argStr);  // сработает и выведет 1:2:3

}

sayHi(1, 2, 3);
</code>

===== Лямбда функции =====

<code php>
+function(y){
return y+1;
}(6);
</code>