javascript - High order functions explanation when passing a function to another function -



javascript - High order functions explanation when passing a function to another function -

i need help breaking downwards line line happens in illustration (an excerpt eloquent javascript):

we have foreach function logs every item in array. understand how works.

function foreach(array, action) { (var = 0; < array.length; i++) action(array[i]); }

so have array called 'numbers' , variable called 'sum' set 0. lost when 'function(number)' gets passed the action parameter. , how work? don't see it's value is. can break down?

var numbers = [1, 2, 3, 4, 5], sum = 0; foreach(numbers, function(number) { sum += number; }); console.log(sum); // → 15

i think you're not grasping syntactic construction of call. 1 as write

var numbers = [1, 2, 3, 4, 5]; var sum = 0; function addtosum(number) { sum += number; } foreach(numbers, addtosum);

i hope clear happening in here. have function addtosum, , pass function foreach function - refer parameter name action, , phone call each element of passed array in body of loop: action(array[i]). great deal abstraction can pass arbitrary function foreach

so odd syntax now? first, replacing function declaration function expression. function look expression evaluates function object, array literal [1, 2, 3, 4, 5] evaluates array object. it's called anonymous function not have name. take value , assign variable:

var numbers = [1, 2, 3, 4, 5]; var sum = 0; var addtosum = function(number) { sum += number; } foreach(numbers, addtosum);

nothing has changed until here. now, why need variable? don't need identifiers pointing values created expressions. set expressions straight in foreach function phone call - still passing same values (foreach not spot difference):

var sum = 0; foreach([1, 2, 3, 4, 5], function(number) { sum += number; });

javascript function

Comments

Popular posts from this blog

xslt - DocBook 5 to PDF transform failing with error: "fo:flow" is missing child elements. Required content model: marker* -

mediawiki - How do I insert tables inside infoboxes on Wikia pages? -

Local Service User Logged into Windows -