मैं वर्तमान में जावास्क्रिप्ट कोर्स का अनुसरण कर रहा हूं और उदाहरणों में से एक में जावास्क्रिप्ट में दृश्यों के पीछे क्या हो रहा है, इसे समझने में समस्याएं हैं (नीचे कोड देखें)।जावास्क्रिप्ट उदाहरण को समझने में कठिनाई
मैं अधिकांश कोड को समझता हूं और समझता हूं कि आउटपुट लॉग इन क्यों है -> [झूठी, सत्य, सत्य]। लेकिन वहाँ एक हिस्सा जो मुझे पागल गाड़ी चला रहा है (मैं तल पर कोड में कोई ऐरो बताया):
मेरी भ्रम पैरामीटर 1
के आसपास घूमती है:
क्या यात्रा करता है पैरामीटर 1
ले इस पल से var arr5 = mapForEach(arr1, checkPastLimitSimplified(1));
में पारित हो जाता है।
मैं समझता हूं कि checkPastLimitSimplified(1)
को इस फ़ंक्शन के लिए निष्पादन संदर्भ बनाया गया है जिसमें पैरामीटर 1 परिवर्तनीय वातावरण में है।
लेकिन अब क्या होता है? checkPastLimitSimplified
फ़ंक्शन के अंदर फ़ंक्शन अभी तक निष्पादित नहीं किया गया है लेकिन अभी वापस लौटाया गया है। यह वापस आने पर कैसा दिखता है? limiter
चर किस बिंदु पर 1
पैरामीटर प्राप्त करते हैं?
मुझे लगता है कि .bind(this, limiter);
फ़ंक्शन की एक प्रति बनाता है। क्या यह limiter
पहले से ही 1 लौटने से पहले परिवर्तनीय है?
function mapForEach(arr, fn) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
newArr.push(
fn(arr[i])
)
};
return newArr;
}
var arr1 = [1, 2, 3];
var checkPastLimitSimplified = function(limiter) { // < ----CONFUSED
return function(limiter, item) {
return item > limiter;
}.bind(this, limiter);
};
var arr5 = mapForEach(arr1, checkPastLimitSimplified(1));
console.log(arr5);
इसलिए यदि मैं इसे सही ढंग से समझता हूं, तो 'outer_limiter' पैरामीटर को' चेकपास्टलिमिट सिम्प्लिफाइड (1) 'पर कॉल करके फ़ंक्शन में पारित किया जाता है, फ़ंक्शन वापस आने से पहले लाभ प्राप्त होता है। इसलिए अनिवार्य रूप से 'फ़ंक्शन (1, आइटम) { वापसी आइटम> limiter; } 'वापस आ गया है? तो 'वापसी' इस बिंदु पर निष्पादित करने से रोक नहीं है। – Yapartase
निश्चित रूप से, 'वापसी' पूरे 'फ़ंक्शन() {}। बाइंड()' अभिव्यक्ति से संबंधित है। –