javascript - क्या वास्तविक उद्देश्य $.noop() jQuery 1.4 में सेवा करता है?




jquery-1.4 (6)

JQuery के 1.4 के रिलीज नोटों के बारे में बताते हुए, मैं $.noop() जो है:

विवरण : एक खाली कार्य। (1.4 में जोड़ा गया)

आप इस खाली फ़ंक्शन का उपयोग कर सकते हैं जब आप एक फ़ंक्शन के चारों ओर से गुजरना चाहते हैं जो कुछ भी नहीं करेगा।

शायद मुझे यहाँ कुछ गहरा याद आ रहा है, लेकिन वास्तव में एक खाली फ़ंक्शन के आसपास से गुजरने का व्यावहारिक उपयोग क्या है?

कोड उदाहरण की सराहना की।


इस कार्य को $.ajax देव मेलिंग सूची में $.ajax का उपयोग करते समय एम्बेडेड सिस्टम पर प्रदर्शन के मुद्दों के कारण प्रस्तावित किया गया था। आप thread देख सकते हैं।

मूल रूप से, वे चारों ओर खाली अनाम कार्यों की घोषणा करने के बजाय, इस एकल रिक्त फ़ंक्शन का परिचय और उपयोग करना पसंद करते थे।

अब इस फ़ंक्शन का आंतरिक रूप से ajax , event और offset मॉड्यूल में उपयोग किया जाता है।

जब यह पेश किया गया था, तो आप commit को एक रूप दे सकते हैं।


एकमात्र तार्किक कारण यह है कि यदि आप एक फ़ंक्शन को कॉल कर रहे हैं जो कुछ करता है और किसी अन्य फ़ंक्शन को कॉल करता है, और आप चाहते हैं कि उच्च-स्तरीय फ़ंक्शन बिना पैरामीटर फ़ंक्शन को कॉल किए बिना अपना काम करें।

अधिकांश jQuery फ़ंक्शंस वैकल्पिक रूप से एक पैरामीटर फ़ंक्शन लेते हैं, इसलिए आपको एक में पास होने की ज़रूरत नहीं है। हो सकता है कि एक या दो हैं जहां ऐसा नहीं है - या शायद यह डेवलपर्स को उनके कस्टम कोड के साथ सहायता करने के लिए है जो इस तरह का व्यवहार करता है।


यदि आपके पास एक फ़ंक्शन है जो एक फ़ंक्शन को पैरामीटर के रूप में स्वीकार करता है, और आपके पास इसे देने के लिए कोई कोड नहीं है, तो आप $.noop पास कर सकते हैं।

मैं jQuery में ऐसे किसी भी मामले के बारे में नहीं सोच सकता जहाँ पैरामीटर पहले स्थान पर वैकल्पिक न हो, हालाँकि।

लेखन function(){} विपरीत, $.noop करना। कोई नया फ़ंक्शन इंस्टेंस नहीं बनाएगा, जिससे थोड़ी मेमोरी की बचत होगी। हालांकि, अगर आप जो भी इसे पास कर रहे हैं वह फ़ंक्शन ऑब्जेक्ट (जैसे, funcParam.id = 2 ) को संशोधित करने के लिए है, तो $.noop करना चीजों को गड़बड़ कर देगा।


यदि किसी फ़ंक्शन के लिए आपको एक तर्क के रूप में एक फ़ंक्शन पास की आवश्यकता हो सकती है? do_something($.noop) do_something(function(){}) तुलना में do_something(function(){}) do_something($.noop) कहना कम है।

हालांकि ज्यादा नहीं ...

... 6 वर्ण ...

... हाँ, यह सुविधा वास्तव में काफी बेकार लग रही है।


यह विशुद्ध रूप से function(){} लिए एक सुविधा / प्रतिस्थापन function(){} के संदर्भ में जहां कॉलबैक की आवश्यकता है - मुझे नहीं लगता कि मैं जल्द ही कभी भी उपयोग करूंगा।

मुझे यकीन है कि jQuery की टीम को काफी हंसी आई थी जब उन्होंने इसे गिरा दिया था, लेकिन यह एक हास्य उद्देश्य भी था।


वास्तविक विश्व उदाहरण (लगभग अच्छी तरह से):

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

function (){} बजाय इसका उपयोग करें function (){}





noop