2012-01-03 17 views
12

मैं थोड़ा उलझन में हूं कि जावास्क्रिप्ट में फ़ंक्शन कैसे काम करते हैं। मैं समझता हूं कि वे सभी ऑब्जेक्ट्स हैं लेकिन यह कैसे बदलता है कि मैं उन्हें तर्क के रूप में कैसे उपयोग करूं?जावास्क्रिप्ट में नया (अनाम) फ़ंक्शन घोषित करने के लिए कब?

उदाहरण के लिए, मैं एक कॉलबैक फ़ंक्शन जहां 2 तर्क 1000ms के बाद मूल्यांकन किया जाता है ...

$(this).fadeIn(1000,function(){alert('done fading in');}); 

उपयोग करने के लिए मैं के साथ एक ही प्रभाव क्यों प्राप्त नहीं कर सकता कोशिश कर रहा हूँ, तो:

$(this).fadeIn(1000,alert('done fading in')); 

यदि मैं करता हूं, तो यह दोनों एक ही समय में मूल्यांकन करता है। यही है, (यह) तत्व fades में और अलर्ट एक ही समय में पॉप अप करता है।

जब मैं चेतावनी (तर्क) कह रहा हूं, तो क्या मैं एक नई वस्तु नहीं बना रहा जो fadeIn() में पारित हो जाता है?

यह वास्तव में कैसे काम करता है?

+0

अच्छा सवाल। मैं इस के लिए चारों ओर रहूंगा – OptimusCrime

+0

भाषा नरों के लिए: जिस तकनीक को आप चाहते हैं उसे * [आंशिक फ़ंक्शन एप्लिकेशन] [1] * कहा जाता है, जिसे अक्सर * करी * कहा जाता है। आप प्रभावी रूप से एक नया फ़ंक्शन चाहते हैं जहां कुछ तर्क तय किए गए हों, और अन्य नहीं हैं। [1]: http://en.wikipedia.org/wiki/Partial_application –

+1

@nd: नहीं, यह वास्तव में यह नहीं है। उदाहरण में कोई करी या आंशिक मूल्यांकन नहीं चल रहा है। यदि आप एक शब्द की तलाश में हैं, * अनाम कार्य * यह है। कार्यों के लिए * उच्च आदेश फ़ंक्शंस * जो तर्क के रूप में कार्य करते हैं। – KaptajnKold

उत्तर

19

executeing में इस

$(this).fadeIn(1000,alert('done fading in')); 

क्या fadein() अपने दूसरे तर्क के रूप में देखता पहले निष्पादित करेंगे

alert('done fading in'); 

? यह

alert('done fading in') 

बुला का परिणाम है हम fadein कॉल करने से पहले() सचेत करने के लिए() कॉल कर रहे हैं।

इस मामले

$(this).fadeIn(1000,function(){alert('done fading in');}); 

में हम एक वस्तु

function(){alert('done fading in');} 

जो fadein() सही समय पर कॉल कर सकते है।

2

पहली पंक्ति में दूसरा पैरामीटर एक विधि है। और दूसरी पंक्ति में यह एक विधि कॉल है।

आप भी यह इस

function fadeInCallback() { 
    alert('done fading in'); 
} 

$(this).fadeIn(1000, fadeInCallback); 

प्रकार लिख सकते हैं तो क्या हम करते हैं कि हम fadeInCallback के लिए एक संदर्भ तो jQuery fadein समारोह fadeInCallback कॉल कर सकते हैं एक बार यह लुप्त होती के साथ किया जाता है में पास है।

दूसरी पंक्ति jQuery fadein समारोह

5

जब आप लिखें:

$(this).fadeIn(1000,alert('done fading in')); 

आप immadiately इस नाम के बाद समारोह नाम और कोष्ठकों डालकर चेतावनी बुलाया फ़ंक्शन को कॉल करें। और फीका करने के लिए इस कॉल के परिणाम पास हो गए हैं - यह अनिर्धारित है, क्योंकि चेतावनी हमेशा अनिर्धारित होती है।

जब आप

$(this).fadeIn(1000,function(){alert('done fading in');}); 

बारे में आप एक समारोह उद्देश्य यह है कि और fadein को यह समारोह वस्तु पारित पैदा करते हैं।तो फीडइन करने के बाद यह इस समारोह को कॉल कर सकता है।

यह रूप में ही है:

// create function 
var callback = function() { alert('done fading in'); }; 
// and pass this function to fadeIn 
$(this).fadeIn(1000, callback); 

लेकिन जब आप लिखते हैं:

var callback = alert('done fading in'); 
$(this).fadeIn(1000, callback); 

तो आप immadiately चेतावनी कॉल और fadein मूल्य जो चेतावनी रिटर्न के लिए पारित करेंगे - अपरिभाषित।

संबंधित मुद्दे