Как это работает? Необязательный первый аргумент, используемый в Express (err, req, res, next) или (req, res, next)

С помощью Express / Connect я могу настроить функцию промежуточного программного обеспечения в любом из форматов:

function(req, res, next) // first argument will be a request

Или

function(err, req, res, next) // first argument will be an error

Отступаем от Express, Connect, к базовому JavaScript: я не понимаю, как это возможно иметь необязательный первый аргумент ?

Как можно узнать, что моя функция сначала примет объект err ? Я подумал, что для того, чтобы это стало возможным, структура должна быть такой:

function(req, res, next, err)

Я упустил здесь что-то базовое? Можно ли узнать, сколько аргументов ожидает функция?

Изменить: спасибо за ответы ниже. но функция промежуточного программного обеспечения передается в выражение, поэтому переменная arguments недействительна. хотя длина верна ... Думаю, я понял это, было бы хорошо получить подтверждение, так ли это. Пример ниже:

var fn;

fn = function (one, two) {};
console.log(fn.length); // 2

fn = function (one, two, three) {};
console.log(fn.length); // 3
12
задан Ross 8 December 2011 в 13:08
поделиться