Getting unexpected NaN in the exercise in the eloquent chapter 4 of Javascript, but the error is not obvious enough for me to pick it up. Can someone take a look and point out my mistake?
/* Write a range function that takes two arguments, start and end, and returns an array containing all the numbers from start up to (and including) end. */ var numRng = []; function range( start, end ) { //var numRng = []; cntr = ( end - start ); for ( i = 0; i <= cntr; i++ ) { numRng.push( start ); start++; } // end FOR //return numRng; } // end FUNC range range( 1, 10 ); /*for ( i = 0; i < numRng.length; i++ ) { console.log( 'Array element ' + numRng.indexOf( 1 + i ) + ' contains range value: ' + numRng[i] ); }*/ /* Next, write a sum function that takes an array of numbers and returns the sum of these numbers. Run the previous program and see whether it does indeed return 55. */ var total = 0; function sum( numRng ) { //var total = 0; for ( i = 0; i <= numRng.length; i++ ) { //console.log( total ); total += numRng[i]; //console.log( total ); } // end FOR console.log( typeof total ); console.log( total ); } // end FUNC range sum( numRng ); console.log( 'Total sum of all element values held by array numRng is: ' + total );
And here is the Firebug output, showing that typeof total after the for loop in func sum is really number , but then output as NaN .
var numRng = []; // seem to require global var ...nt values held by array numRng is: ' + total ); number NaN Total sum of all element values held by array numRng is: NaN
Any help was appreciated.
source share