Какую реальную цель выполняет $ .noop () в jQuery 1.4?

Обдумывая заметки о выпуске jQuery 1.4, я наткнулся$.noop() который:

Описание: Пустая функция. (добавлено в 1.4)

Вы можете использовать эту пустую функцию, когда хотите передать функцию, которая ничего не будет делать.

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

Примеры кода приветствуются.

Ответы на вопрос(9)

jQuery.fn.myAwesomeAjax = function(url, complete) {
  return jQuery.ajax(url || this.url)
    .complete(complete || jQuery.noop);
};

Используйте это вместоfunction (){}

если какой-то плохой API требует функцию в качестве параметра, и вы не хотите в ней что-либо делать, это будет способ, поддерживаемый фреймворком, чтобы сделать это очевидным.

 Shog9♦15 янв. 2010 г., 05:01
Действительно, именно так оно и выглядит для использования в самом jQuery - в качестве очевидного заполнителя, когда реальный обратный вызов недоступен.

чтобы вы передали функцию в качестве аргумента, может быть? Короче сказатьdo_something($.noop) чемdo_something(function(){}).

Хотя не сильно ...

... 6 символов ...

... да, эта функция выглядит совершенно бесполезной на самом деле.

 Shog9♦15 янв. 2010 г., 05:16
Смотрите ссылки в ответе CMS. Оказывается, этоМожно Сделать разницу...
 SLaks15 янв. 2010 г., 04:48
Это позволяет избежать накладных расходов на новую функцию.
 Nicolás15 янв. 2010 г., 04:56
На самом деле SLaks это правильно. Функция, назначеннаяnoop создается один раз при загрузке библиотеки jquery. foo (function () {}) создает новый объект функции каждый раз, когда выполняется эта строка. Тем не мение,никого не волнует, так как остальная часть вашего JS-кода займет больше времени по сравнению.
 JAL15 янв. 2010 г., 04:51
Я бы на это не рассчитывал, SLaks - проверь код для noop в источнике: noop: function () {},
 Shog9♦15 янв. 2010 г., 04:56
@Salsa: но это всегда одна и та же функция. Везде используется $ .noop (), это один и тот же экземпляр одной функции бездействия. Я сомневаюсь, что в большинстве виртуальных машин JS для этого есть какая-то заметная разница, но в теории ...

которая делает что-то и вызывает другую функцию, и вы хотите, чтобы функция более высокого уровня выполняла свою функцию без вызова функции параметра.

Большинство функций jQuery необязательно принимают функцию параметра, поэтому вам не нужно передавать один из них. Возможно, есть один или два, где это не так - или, возможно, это помогает разработчикам с их пользовательским кодом, который ведет себя так.

которая принимает функцию в качестве параметра, и у вас нет кода для ее передачи, вы можете передать$.noop.

Я не могу вспомнить ни одного такого случая в jQuery, где параметр не является необязательным в первую очередь, хотя.

В отличие от письмаfunction(){}, проходя$.noop не будет создавать новый экземпляр функции, сохраняя немного памяти. Однако, если все, что вы передаете, изменяет объект функции (например,funcParam.id = 2), проходя$.noop все испортит.

 Anthony15 янв. 2010 г., 04:58
Приятно не проверять каждый переданный параметр функции на неопределенное перед выполнением или при вызове функции, чтобы каждый раз предоставлять функцию () {}.

если у вас есть функция, которая предоставляет функции для других функций.

Пример: у вас есть список данных. У каждого предмета есть кнопка, которая что-то делает. «Что-то» может быть разным для каждого предмета. У вас есть «FunctionFactory», которая принимает элемент и возвращает функцию. Если вы не хотите, чтобы кнопка что-то делала по какой-либо причине, тогда самый простой способ - вернуть пустую функцию, так как вы знаете, что ваш Factory ALWAYS возвращает функцию.

У меня нет конкретного примера для jQuery, но я думаю, это может пригодиться при использовании в блоке .each или .map.

Решение Вопроса

нных систем при использовании$.ajax, сообщается в списке рассылки jQuery-Dev. Вы можете увидетьнить.

В основном они предпочитали вводить и использовать эту единственную пустую функцию, а не объявлять пустые анонимные функции повсюду.

Теперь эта функция используется внутриАякса, мероприятие а такжесмещение модули.

Вы можете посмотреть насовершить когда это было введено также.

которые требуют обратных вызовов, но для некоторых частей я на самом деле не хочу использовать определенный обратный вызов. Итак, я вставил в функцию () {}.

noop определяется в источнике jQuery как

noop: function() {}

поэтому он подойдет везде, где вы используете пустую функцию, например, в приведенном выше примере.

function(){} в контексте, где требуются обратные вызовы - я не думаю, что буду использовать его в ближайшее время.

Могу поспорить, что команда jQuery посмеялась, когда ее закинули, хотя и служит комедийной цели.

Ваш ответ на вопрос