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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

noop: function() {}

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

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

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

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

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

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

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

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

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

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

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

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

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

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