I was sandboxing around with JavaScript objects and accidentally caused an infinite loop. Except, I didn’t. I tested my code multiple times and… well see for yourself:
var roster = {
Liv: {
name: "Olivia Rooney",
rank: "Her Majesty, The Queen [♛]",
gender: "Female",
nickName: "Liv",
age: 20
},
Maddie: {
name: "Maddie Rooney",
rank: "Her Majesty, The Queen [♛]",
gender: "Female",
nickName: "Mad-Dog",
age: 20
},
Emma: {
name: "Emma Ross",
rank: "Her Majesty, The Princess [♛]",
gender: "Female",
nickName: "The Crimson Samurai",
age: 19
},
Aqua: {
name: "Aqua McCoolah",
rank: "General [★★★★★]",
gender: "Male",
nickName: "Aqua Phoenix",
age: 21
},
Mikayla: {
name: "Mikayla McCoolah",
rank: "General [★★★★]",
gender: "Stabbitha",
age: 27
},
Lynx: {
name: "Lynx McCoolah",
rank: "General [★★★]",
gender: "Female",
nickName: "Master of Stealth",
age: 21
},
Jack: {
name: "Jack McCoolah",
rank: "General [★★★]",
gender: "Male",
nickName: "The Rogue Shadow/The Defender",
age: 20
},
Scarlett: {
name: "Scarlett McCoolah",
rank: "General [★★]",
gender: "Female",
nickName: "Scar",
age: 18
},
Nile: {
name: "Nile McCoolah",
rank: "General [★★]",
gender: "Male",
nickName: "Master of Water",
age: 19
},
Chase: {
name: "Chase Davenport",
rank: "General [★★]",
gender: "Male",
nickName: "Master of Intelligence",
age: 18
},
Bree: {
name: "Bree Davenport",
rank: "General [★]",
gender: "Female",
nickName: "Master of Speed",
age: 19
},
Adam: {
name: "Adam Davenport",
rank: "General [★]",
gender: "Male",
nickName: "Master of Strength",
age: 23
},
Leo: {
name: "Leo Dulley",
rank: "General [★]",
gender: "Male",
nickName: "Metal Limbs",
age: 17
},
Skylar: {
name: "Skylar McCoolah",
rank: "General [★]",
gender: "Female",
nickName: "Sky Mage",
age: 16
},
SkylarStorm: {
name: "Skylar Storm",
rank: "Colonel",
gender: "Female",
nickName: "Ms. Storm",
age: 18
},
Winter: {
name: "Winter McCoolah",
rank: "Colonel",
gender: "Female",
nickName: "Timebreaker",
age: 15
},
Connor: {
name: "Connor McCoolah",
rank: "Colonel",
gender: "Male",
nickName: "Mr. Invulnerable",
age: 15
},
Amber: {
name: "Amber McCoolah",
rank: "Lieutenant Colonel",
gender: "Female",
nickName: "The Berserker",
age: 14
},
Kim: {
name: "Kim Krawford",
rank: "Lieutenant Colonel",
gender: "Female",
nickName: "Agent Krawford",
age: 20
},
Douglas: {
name: "Douglas Davenport",
rank: "Lieutenant Colonel",
gender: "Male",
nickName: "N/A",
age: 42
},
Donald: {
name: "Donald Davenport",
rank: "Lieutenant Colonel",
gender: "Male",
nickName: "Big-D",
age: 44
},
Mahooma: {
name: "Michael Mahooma",
rank: "Major",
gender: "Male",
nickName: "Mahooma",
age: 38
},
Mason: {
name: "Mason McCoolah",
rank: "Major",
gender: "Male",
nickName: "The Sasquatch",
age: 40
},
Jason: {
name: "Jason McCoolah",
rank: "Major",
gender: "Male",
nickName: "Mr. Reckless",
age: 36
},
Parker: {
name: "Parker Rooney",
rank: "Captain",
gender: "Male",
nickName: "Doctor P",
age: 16
},
Ruby: {
name: "Ruby Rooney",
rank: "Captain",
gender: "Female",
nickName: "The Red Ribbon",
age: 14
},
Joey: {
name: "Joseph Rooney",
rank: "Captain",
gender: "Male",
nickName: "Falcon",
age: 18
},
Thompson: {
name: "Ash Thompson",
rank: "Captain",
gender: "Male",
nickName: "Mercenary",
age: 32
}
};
var rosterList = [
roster.Liv,
roster.Maddie,
roster.Emma,
roster.Aqua,
roster.Lynx,
roster.Mikayla,
roster.Jack,
roster.Scarlett,
roster.Nile,
roster.Chase,
roster.Bree,
roster.Adam,
roster.Leo,
roster.Sky,
roster.SkylarStorm,
roster.Winter,
roster.Connor,
roster.Amber,
roster.Kim,
roster.Douglas,
roster.Donald,
roster.Mahooma,
roster.Mason,
roster.Jason,
roster.Parker,
roster.Ruby,
roster.Joey
];
var teams = {
EliteForce: {
TeamName: " ~ Elite Force ~ ",
TeamLeader: roster.Chase,
SecondInCommand: roster.SkylarStorm,
TeamMembers: [roster.Bree, roster.Adam, roster.Leo],
Handlers: [roster.Douglas, roster.Donald]
},
TheOGTeam: {
TeamName: " ~ The Original Team ~ ",
TeamLeader: roster.Aqua,
SecondInCommand: roster.Mikayla,
TeamMembers: [roster.Jack, roster.Lynx],
Handlers: [roster.Mason, roster.Jason, roster.Mahooma]
},
TheNewTeam: {
TeamName: " ~ The Team ~ ",
TeamLeader: roster.Aqua,
SecondInCommand: roster.Mikayla,
TeamMembers: [
roster.Jack,
roster.Lynx,
roster.Nile,
roster.Scarlett,
roster.Skylar,
roster.Amber,
roster.Winter,
roster.Connor
],
Handlers: [roster.Mason, roster.Jason, roster.Mahooma]
},
TheRoyalDefenders: {
TeamName: " ~ The Royal Defenders ~ ",
TeamLeader: roster.Jack,
SecondInCommand: roster.Skylar,
TeamMembers: [roster.Winter, roster.Connor],
Handlers: [roster.Kim, roster.Thompson]
}
};
var teamsList = [
teams.EliteForce,
teams.TheOGTeam,
teams.TheNewTeam,
teams.TheRoyalDefenders
];
var logObject = function(object) {
console.log("Name: " + object.name);
console.log("Gender: " + object.gender);
console.log("Age: " + object.age);
console.log("Rank: " + object.rank);
console.log("Nickname: " + object.nickName);
};
var logName = function(object) {
return object.name;
};
var logRoster = function() {
for (i = 0; i < rosterList.length; i++) {
logObject(rosterList[i]);
console.log("");
};
};
var logTeam = function(team) {
console.log(team.TeamName);
console.log("Team Leader: " + logName(team.TeamLeader));
console.log("Second in Command: " + logName(team.SecondInCommand));
console.log("Team Members: " + logName(team.TeamMembers[0]));
for (i = 1; i < team.TeamMembers.length; i++) {
console.log(" " + logName(team.TeamMembers[i]));
};
console.log("Handlers: " + logName(team.Handlers[0]));
for (i = 1; i < team.Handlers.length; i++) {
console.log(" " + logName(team.Handlers[i]));
};
};
var logTeams = function() {
for (i = 0; i < teamsList.length; i++) {
logTeam(teamsList[i]);
console.log("");
console.log("");
};
};
logTeams();
This code doesn’t work and crashes my page. However, if I manually call the code that would run when I call:
logTeams();
Like so:
logTeam(teamsList[0]);
console.log("");
console.log("");
logTeam(teamsList[1]);
console.log("");
console.log("");
logTeam(teamsList[2]);
console.log("");
console.log("");
logTeam(teamsList[3]);
console.log("");
console.log("");
It works. I guess my question is why does calling that function result in an infinite loop/page crash, but manually calling the code that would run if you called the function works how it should?