2011-07-05 21 views
8

मैं jQuery पर नया हूं और कॉलबैक फ़ंक्शन के साथ ब्रांड्स के उपयोग (या नहीं) के बारे में थोड़ा उलझन में हूं।कॉलबैक फ़ंक्शन - ब्रांड्स का उपयोग

$("p").hide(1000, cb); 

और

$("p").hide(1000, cb()); 

जब सीबी समारोह निष्पादित किया जाता है यह के साथ क्या करना है:

function cb() { 
// do something 
} 

अब के बीच अंतर क्या है: मैं एक समारोह है कहो? यह बहुत अच्छा होगा अगर कोई मुझे शर्तों के सबसे सरल तरीके से समझा सकता है।

+3

सुझाव:: कंसोल में इस कॉपी और अंतर देखें:

निम्नलिखित पर विचार करें 'समारोह सीबी() {42 वापसी;}; console.log (सीबी); console.log (cb()); ' –

+3

यह जावास्क्रिप्ट का एक कार्य है। यह jQuery तक ही सीमित नहीं है। –

+0

आह वास्तव में, उल्लेख करने लायक है। jQuery एक _library_ है (और फ़ंक्शन '$' और '.hide' इससे आते हैं)।हालांकि, इस तरह के बुनियादी वाक्यविन्यास नियम भाषा द्वारा बनाए जाते हैं, जो जावास्क्रिप्ट है। इस प्रकार, इस सवाल को वास्तव में इसके आसपास के संदर्भ के अलावा jQuery के साथ बहुत कम करना है। –

उत्तर

8

cb() मुझे समारोह सीबी को क्रियान्वित करने के परिणाम दे मतलब है।

cb समारोह सीबी या, और अधिक सही एक सूचक (संदर्भ) यह करने के लिए है।

+0

धन्यवाद (उत्तर देने वाले सभी लोगों के लिए भी)। मुझे लगता है कि मैं सीबी() समझता हूं लेकिन सीबी के साथ मैं किस स्थिति में इसका संदर्भ देना चाहूंगा? – Edwin

+1

@Edwin - अपने छिपे हुए उदाहरण का उपयोग करके, आप सामान्य रूप से फ़ंक्शन इनलाइन को परिभाषित करेंगे, लेकिन यदि आपके पास पूर्वनिर्धारित फ़ंक्शन था, तो आप इसे दिखाए गए अनुसार संदर्भित करते हैं - बिना माता-पिता के ... – Michael

6

क्या सीबी फ़ंक्शन निष्पादित होने पर ऐसा करना है?

अनिवार्य रूप से, हाँ, हालांकि अंतर उससे थोड़ा गहरा चलता है।

  • cb फ़ंक्शन के लिए एक प्रकार का संदर्भ है। आप फ़ंक्शन को लाइन के नीचे कहीं भी बुलाए जाने वाले पैरामीटर के रूप में पास कर रहे हैं।

  • cb() एक फ़ंक्शन कॉल है; समारोह लागू किया जाएगा, और परिणाम .hide पर एक तर्क के रूप में पारित किया गया।

2

$("p").hide(1000, cb); समारोह cb द्वारा संदर्भित, एक कॉलबैक के रूप में गुजरता है।

$("p").hide(1000, cb()); फ़ंक्शन cb कहा जाता है जब मान वापस लौटाता है।

को देखते हुए:

function cb(){ return true; } 

पूर्व बाद में फोन करने के लिए कॉलबैक गुजर रहा है। बाद दिए गए मान true गुजरता है, और अंतर यह है कि जावास्क्रिप्ट कार्यों में प्रथम श्रेणी वस्तुओं रहे हैं और इतना है कि वे बाद में मार डाला या कुछ तर्क के आधार पर हो सकता है अन्य कार्यों के लिए पारित किया जा सकता अनिवार्य रूप से $("p").hide(1000, true);

+1

* "फ़ंक्शन को पास करता है cb () '(कॉलबैक के रूप में)" * '()' (फ़ंक्शन नाम के बाद) यहां भ्रमित हैं। –

+0

सच है। स्पष्टता के लिए संपादित किया गया। – Dan

2

है।

function add(a, b) { 
    return a + b; 
} 

function minus(a, b) { 
    return a - b; 
} 

function apply(func, a, b) { 
    return func(a,b); 
} 

apply(add, 3, 4); // returns 7 
apply(minus, 3, 4); // returns -1 

apply(add(), 3, 4); // error: invalid number of arguments for add 

apply(add(0,0), 3, 4); // error: add returns 0, but 0 is not a function and 
// so apply crashes when it tried to call zero as a function 
संबंधित मुद्दे