Что делает jQuery, так это проверяет тип переданных вами параметров и выясняет, что вы имели в виду.Это дает вам некоторую гибкость в том, что вы включаете.Это работает только тогда, когда ожидаемые параметры имеют другой тип.Например, если у вас есть три возможных параметра для функции: строка, число и функция, тогда принимающая функция может проверить тип каждого параметра и выяснить, какой именно, независимо от того, в каком порядке они переданы или какие
В jQuery, как правило, есть только один параметр, который является функцией, поэтому jQuery может найти его, независимо от того, где он находится в списке параметров.
Если, с другой стороны,С другой стороны, функция взяла в качестве параметров две строки или две функции, тогда они должны были бы быть переданы в правильном порядке, чтобы принимающая функция могла знать, какой был какой.
Это может работать в javascript, потому что:
- Если параметр не передается в функцию, javascript просто устанавливает результирующий аргумент функции в значение «undefined», позволяя вызывающей функции видеть, что она отсутствовала при вызове.
- Javascript позволяетодин для изучения типов переменных, так что в этом случае вызывающая функция может выглядетьна различные типы того, что было передано, и измените его поведение.
Если вы посмотрите на функцию click (), вы увидите, что jQuery имеет три возможных способа ее использования:
.click()
.click( handler(eventObject) )
.click( [eventData,] handler(eventObject) )
Внутренне, функция щелчка в jQuery объявляется так:
function (data, handler)
Затем, когда эта функция вызывается, jQuery просматривает данные параметров и обработчик и определяет, что если оба параметра не определены, то вызывающая сторонадолжно быть сделано:
.click();
Если только параметр обработчика не определен, а параметр data определен и является типом функции, то вызывающая сторона должна использовать вторую форму:
.click(handler)
В этом случае jQuery внутренне делает это, чтобы поместить параметры в правильные слоты перед их использованием:
handler = data;
data = null;
Если оба параметра не определены, то вызывающая сторона должна была использовать:
.click(data, handler)
и он может использовать оба параметра, как объявлено.