Это потому, что определение функции не знает, что jQuery означает доллар внутри нее.Возьмем для примера:
var wrapper = function($, window, document, undefined) {
// this function doesn't know what dollar is
};
// it could be called like this:
wrapper(jQuery, window, document, undefined);
// or like this:
wrapper(1, 2, 3, 4);
Ваша функция не может знать определение того, что вы передаете. Ваша функция должна выяснить это и убедиться, что ваши аргументы верны.
Определение функции и ее выполнение - две разные вещи.Вы не получите intellisense для аргументов функции внутри определения функции.