How does Javascript interpret this parameter error? -


function each(collection, callback) {   if (array.isarray(collection)) {     (var = 0; < collection.length; i++) {       callback(collection[i]);     }   }   else {     (var prop in collection) {       callback(collection[prop], prop, collection);     }   } }   var array = [1, 2, 3, 4, 5];   function reduce(collection, callback, initial) {   var current = initial;   each(collection, function(current, e) {     current = callback(current, e);   })   return current; }  console.log(reduce(array, function(a, b) { return + b }, 0));  -->>> 0 

i'm trying rewrite underscore each/reduce functions, , use each function in reduce. know have mistake in there-- (current should not in each callback function) should be

each(collection, function(e) {   current = callback(current, e); }) 

and returns 15 should, why return 0 when add current in there parameter? shouldn't return nan? last part of loop try add 5 , undefined nan.

the thing add current parameter list of callback function, have two variables - same name, in different scopes. 1 in callback shadow 1 in reduce function.

so callback reducer called element each passed callback , undefined, when assigning result (nan) current assign local variable of each callback.

the outer current variable stay unaffected, , when returned reduce still holds initial value initialised - 0.


Comments

Popular posts from this blog

c++ - Difference between pre and post decrement in recursive function argument -

php - Nothing but 'run(); ' when browsing to my local project, how do I fix this? -

php - How can I echo out this array? -