2012-06-16 12 views
6

मैं जावास्क्रिप्ट सीख रहा हूं। मुझे पता है कि फ़ंक्शन परिभाषित होने के बाद हम फ़ंक्शन को अन्य फ़ंक्शंस में पास कर सकते हैं।जावास्क्रिप्ट: पासिंग फ़ंक्शन

function map(func, array) { 
    var result = []; 
    forEach(array, function (element) { 
    result.push(func(element)); 
    }); 
    return result; 
} 

मैं क्या समझ सकता हूँ से, समारोह नक्शे के एक तर्क है: लेकिन मैं इस उदाहरण को समझने पर मदद की जरूरत है। मुझे फ़ंक्शन के रूप में फ़ंक्शन प्रदान करने की आवश्यकता है। लेकिन ट्यूटोरियल में मैं पढ़ रहा हूं, यह उल्लेख नहीं करता कि यह func कहां से आया है, ऐसा लगता है कि इस तर्क को निर्दिष्ट करने की आवश्यकता नहीं है? ट्यूटोरियल में एक और उदाहरण समान है:

function count(test, array) { 
    return reduce(function(total, element) { 
    return total + (test(element) ? 1 : 0); 
    }, 0, array); 
} 

यह परीक्षण कार्य तत्व === 0 के बराबर है? 1: 0, लेकिन ट्यूटोरियल यह नहीं कहता कि मुझे टेस्ट फ़ंक्शन लिखना होगा। क्या मुझे यह टेस्ट फ़ंक्शन लिखना है?

+0

ट्यूटोरियल कहां हैं? –

+0

शायद यह [w3schools] (http://www.w3schools.com/) है। –

+0

http://eloquentjavascript.net/chapter6.html#p31aabc64 – Jenny

उत्तर

4

संपादित करें: ट्यूटोरियल आप पोस्ट, समारोह पारित कर दिया के लिए लिंक में एक पूर्व निर्धारित समारोह Math.round है। मेरा उदाहरण नीचे पास करने के लिए अपना स्वयं का फ़ंक्शन दिखाता है।


map उदाहरण कार्यान्वयन दिखाता है। जब आप map पर कॉल करते हैं तो आप फ़ंक्शन (और ऐरे) प्रदान करेंगे।

इसकी प्रतीत से, map आपके फ़ंक्शन में वर्तमान आइटम को ऐरे में पास कर देता है, और आपके फ़ंक्शन को इसके साथ कुछ करना चाहिए और परिणाम वापस करना चाहिए। परिणाम आपके फ़ंक्शन रिटर्न नए ऐरे में जोड़े जाते हैं।

var arr = [1,2,3,4,5]; 
var my_func = function(item) { return item * 2; }; 

var new_arr = map(my_func, arr); 

console.log(new_arr); // [2,4,6,8,10] 
  1. हम किसी सरणी (arr) बनाया,

  2. हम एक समारोह (my_func), जो लेता है जो कुछ भी यह दिया है बनाया है, और 2.

  3. द्वारा यह गुणा
  4. हम दोनों को map

  5. दोनों पास हुए
  6. map फ़ंक्शन हमारे arr को पुनरारंभ करता है, जो हमारे फ़ंक्शन पर प्रत्येक पुनरावृत्ति में वर्तमान आइटम को पास करता है।

  7. हमारे समारोह वर्तमान आइटम लेता है, और map समारोह है कि परिणाम लेता द्वारा 2.

  8. यह गुणा करने का परिणाम देता है, और नए सरणी में जोड़ देता है।

  9. जब पुनरावृत्ति हो जाती है, तो map फ़ंक्शन नया ऐरे देता है।

+0

मदद के लिए धन्यवाद। अपना जवाब पढ़ने के बाद, मैंने बस यह पता लगाया कि बराबर फ़ंक्शन टेस्ट है। – Jenny

0

जब आप मानचित्र पर कॉल करते हैं, तो आप एक इनलाइन फ़ंक्शन या मौजूदा फ़ंक्शन पास करते हैं।

// The following would return [2,3,4] 
map(function(item) { return item + 1}, [1,2,3]); 

function double(item) {return item*2} 
map(double, [1,2,3]) 
// returns [2,4,6] 

// Your example, Math.round 
map(Math.round, [0.01, 2, 9.89, Math.PI]) 
// returns [0,2,10,3] 

यह है दूसरे शब्दों में, एक समारोह किसी भी अन्य तर्क की तरह एक और कार्य करने के लिए पारित किया जा सकता।यह वही पंक्तियों पर है कि एक फ़ंक्शन किसी अन्य चर के समान होता है या किसी फ़ंक्शन से वापस किया जा सकता है

function createAdder(toAdd) { 
    return function (num) { 
     return num + toAdd; 
    } 
} 

var add5 = createAdder(5); 
add5(2); // returns 7 


var add7 = createAdder(7); 
add7(-2); // returns 5 
संबंधित मुद्दे