Какая реальная цель делает $ .noop (), служат в jQuery 1.4?

Выливаясь по информации о версии относительно jQuery 1.4, я приехал через $.noop() который является:

Описание: пустая функция. (добавленный в 1,4)

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

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

Примеры кода ценятся.

46
задан Sampson 15 January 2010 в 03:40
поделиться

8 ответов

Другие уже решили проблему, но вместо использования printf («% c», c); использование putchar (c) гораздо эффективнее. При запросе printf напечатать только один символ возникает часть накладных расходов.

-121--4213608-

getc возвращает int .

заменить символ c на int c .

также getc возвращает EOF , заменить тест на NULL тестом на EOF

-121--4213609-

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

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

Теперь эта функция используется в модулях ajax , event и offset .

Можно просмотреть commit при его введении.

49
ответ дан 26 November 2019 в 20:28
поделиться

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

-121--1102684-

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

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

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

-121--1102682-

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

Бьюсь об заклад, команда jQuery довольно рассмешила, когда ее забросили, а также служит комедийной цели.

0
ответ дан 26 November 2019 в 20:28
поделиться

На первый взгляд, он не выглядит разумным, но имеет преимущество, заставляя результат быть последовательностью (или последовательностью Юникода), а не каким бы он ни был раньше. Другим способом сделать то же самое может быть вызов str для аргумента формата (или Юникода).

-121--4998526-

Вам, вероятно, лучше спросить Натана Боррора , автора. Это может быть просто личный стиль.

Джанго действительно использует прокси-объекты для последовательностей в некоторых случаях, хотя, так что может быть, чтобы заставить их «фактические» последовательности. Я полагаю, что эти прокси предназначены для целей i18n/l10n (не цитируйте меня об этом, также может быть, чтобы избежать поиска в БД до необходимости, или ряд других причин).

-121--4998527-

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

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

noop: function() {}

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

3
ответ дан 26 November 2019 в 20:28
поделиться

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

3
ответ дан 26 November 2019 в 20:28
поделиться
--

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

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

0
ответ дан 26 November 2019 в 20:28
поделиться

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

Хотя не очень много ...

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

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

0
ответ дан 26 November 2019 в 20:28
поделиться

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

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

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

-121--1102682-

Перейдите на вкладку библиотеки Java Build Path, Add Variable (добавить имя переменной и расположение папки библиотеки).

После добавления переменной нажмите на extend, чтобы увидеть все банки. Выберите их все (или все необходимое) и нажмите кнопку ОК. Выйдите из диалогового окна компоновки путем нажатия кнопки ОК.

Это приведет к удалению всех банок из вида проекта.

-121--918515-

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

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

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

0
ответ дан 26 November 2019 в 20:28
поделиться

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

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

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

19
ответ дан 26 November 2019 в 20:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: