2017-05-17 9 views
6

मैंने सोचा कि मुझे पता था कि बंद क्या था लेकिन मुझे प्रतिक्रिया के आसपास कुछ लेख पढ़ने के लिए इतना यकीन नहीं है।एक थंक और बंद करने के बीच अंतर

क्या कार्य "थंक" से नीचे है? (मेरे लिए यह एक बंद, मैं इस बारे में एक ब्लॉग लेख से ले लिया है प्रतिक्रिया https://spin.atomicobject.com/2016/10/05/form-validation-react/)

लेखक बताते हैं: "आगे, ruleRunner समारोह को देखो ruleRunner एक thunk, या एक समारोह एक फ़ंक्शन है।।"

export const ruleRunner = (field, name, ...validations) => { 
    return (state) => { 
    for (let v of validations) { 
     let errorMessageFunc = v(state[field], state); 
     if (errorMessageFunc) { 
     return {[field]: errorMessageFunc(name)}; 
     } 
    } 
    return null; 
    }; 
}; 

इसके विपरीत मैंने सोचा था कि एक thunk था "एक समारोह इस संदर्भ (राज्य, कार्य, आदि) यह भविष्य में तर्क के कुछ प्रकार को पूरा करने के की आवश्यकता होगी के सभी शामिल है।" से: http://www.austinstory.com/what-is-a-thunk-in-javascript/

const add = (x,y) => x + y; 

const thunk =() => add(1,2); 

thunk() // 3 
मेरे लिए

तो पहला लेख के लेखक गलत है, वह एक विवरण और एक बंद करने के उदाहरण देकर नहीं है एक thunk। लेकिन मैं गलत हो सकता हूं इसलिए मैं इस सवाल से पूछ रहा हूं।

क्या पहला आलेख लेखक एक थंक के बारे में गलत है और क्या यह कहने का अधिकार है कि एक थंक एक विशिष्ट प्रकार का बंद है "जिसमें सभी संदर्भ (राज्य, कार्य, आदि) को ले जाने के लिए आवश्यक होगा भविष्य में कुछ प्रकार के तर्क से बाहर निकलें। "

+1

एक थंक एक गैर-तर्क बंद करने जैसा है जो बाद में मांग पर अनिवार्य रूप से एक समारोह चलाता है, यह कोई "सोच" नहीं करता है क्योंकि इसमें प्रक्रिया करने के लिए कोई तर्क नहीं है और अनिवार्य रूप से "थंक" है।मैं औपचारिक रूप से कहूंगा कि लेखक गलत है, यह एक थंक नहीं है। यह एक बंद है। हालांकि मैं Redux के संदर्भ में इसके बारे में निश्चित नहीं हूँ। – Li357

उत्तर

2

"नियम धावक एक थंक है, या एक समारोह जो एक समारोह देता है।"

नहीं, यह बकवास है। एक फ़ंक्शन जो फ़ंक्शन देता है उसे higher-order function के रूप में जाना जाता है। लौटा फ़ंक्शन अक्सर closure होता है।

मैंने सोचा था कि एक थंक "एक समारोह जिसमें सभी संदर्भ (राज्य, कार्य, आदि) शामिल हैं, भविष्य में कुछ प्रकार के तर्क को करने के लिए इसकी आवश्यकता होगी।"

हाँ, यह उचित लगता है। यह बंद होने के समान है, हालांकि बंद होने पर आमतौर पर कुछ और तर्क लेते हैं जबकि thunk नहीं होता है - इसे केवल निष्पादित करने की आवश्यकता है।

2

क्लोजर ऐसे कार्य होते हैं जो स्वतंत्र (मुक्त) चर (वेरिएबल जिन्हें स्थानीय रूप से उपयोग किया जाता है, लेकिन एक संलग्न क्षेत्र में परिभाषित किया जाता है) का संदर्भ देता है। दूसरे शब्दों में, इन कार्यों को 'पर्यावरण' याद रखें जिसमें वे बनाए गए थे।

संक्षेप में, एक बंद कोड है जो बाद में क्रियान्वित किया जा सकता का एक ब्लॉक है, लेकिन जो वातावरण में यह पहली बार बनाया गया था का कहना है, इसलिए कि गुंजाइश के लिए संलग्न। एक थंक एक सबराउटिन होता है जो अक्सर, अन्य स्वचालित रूप से किसी अन्य सबराउटिन को कॉल करने में सहायता के लिए बनाया जाता है, इसलिए एक थंक बंद हो सकता है, लेकिन सभी थंक बंद नहीं होते हैं।

थंक्स स्थानीय स्तर पर या वैश्विक स्तर पर संलग्न होने वाले सहायक में सहायक कार्य हैं, जबकि बंद होने पर केवल स्थानीय रूप से शुरू होने वाले दायरे से जुड़ा हुआ होता है।

+4

आप कहां से उद्धरण कर रहे हैं? – Bergi

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