Javascript for loop & the argument key word

Today, I was assigned the task of printing logs to the page instead of to the console if there was a certain string appended to the url so that the our Q/A engineer could get that data into his program.

My task was manageable, but before committing my pull request my boss & I went over the debug program (called debug.js). The process of describing what’s happening in a program I find highly beneficial. As I was talking through the program I noticed the [argument](//developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments) key word.

The argument key word is an object that stores the arguments passed into a function within the scope of that function.

var passArguments = function() {
  return document.write(arguments.length);
};
passArguments(1, 2, 3, 4, 5);
// result: the document prints out 5

Live Code

For the program that I was working on today, the program takes the first argument of the function passArguments as stores it in a variable set as category. Then it loops through the other arguments & strong them in the logs array.

var passArguments = function() {
	var category = arguments[0];
	logs = new Array( arguments.length - 1 );
	for (var i = 0, j = logs.length; i < j; i++) {
	  logs[i] = arguments[i+1];
	}
	document.write(category + ' : ' + '[' + logs + ']' );
};
passArguments('Categories', '1', '2', '3', '4', '5');

Live Code

While my boss & I were going over the program, he wrote out the code similarly to how a browser compiles it.

arguments = ['ga', 'info a', 'info b', 'info c']
arguments = ['ga', 'info a', 'info b', 'info c']

category = 'ga';
logs = [ , , ]

for loop
start at: 0
go to: 3

for loop 1( i = 0)
logs[0] = 'info a'
logs = [ 'info a', , ]

for loop 2 (i = 1)
logs = [ 'info a', 'info b', ]

for loop 3
logs = [ 'info a', 'info b', 'info c']

end for loop