Sunday, 15 January 2012

javascript for loop unexpected results -



javascript for loop unexpected results -

i using function called partial creates function based on arguments give it. reason getting unexpected results if within function phone call loop without using var. for(i=1; i<knownargs.length; i++) when phone call loop using var for (var = 1; < knownargs.length; i++) result expected. here functions using , result expect.

var op = { "+": function(a, b){return a+b;}, "==": function(a, b){return == b;}, "===":function(a, b){return === b;}, "!":function(a){return !a;} }; function map(func, array){ var result = []; foreach(array, function(element){ result.push(func(element)); }); homecoming result; } function foreach(array, action){ for(i=0; i<array.length; i++){ action(array[i]); } } function partial(func) { var knownargs = arguments; homecoming function() { var realargs = []; for(i=1; i<knownargs.length; i++){ realargs.push(knownargs[i]); } for(i=0; i<arguments.length; i++){ realargs.push(arguments[i]); } homecoming func.apply(null, realargs); }; } console.log(map(partial(op["+"], 1), [0,2,4,6,8,10]));

when create phone call @ end expecting array [1,3,5,7,9,11] , when within 2 loops within partial() function have var = #. have never used var there before , can explain me why when not utilize infinite loop returns array of 3s , 4s.

javascript for-loop map partial higher-order-functions

No comments:

Post a Comment