Search code examples
javascriptfunctionloopsfor-in-loop

JS function being called twice?


I can't seem to find the bug that's making the code run twice, and JSFiddle isn't working for me so I can't double check if it's the editor.

var friends = {};
friends.bill = {
    firstName: "Bill",
    lastName: "Gates",
    number: 9,
    address: ["5242", "drank avenue"]
};
friends.steve = {
    firstName: "Steve",
    lastName: "Jobs",
    number: 8,
    address: ["3368", "pool lane"]
};

var list = function(person)
{
    for (var friendName in person)
        console.log(friendName);
};

list(friends);

Output:
bill
steve
bill
steve

Solution

  • I cut and pasted the code you posted into my JavaScript console and the result was:

    bill
    steve
    

    Somewhere, in your original code, you must be calling the function twice.

    Choose a place in the code — in this case I would choose the top of your list function — and put a

    debugger;
    

    statement there, and open the JavaScript console.

    There will be an option in that debugger to see a stack trace. The stack trace will let you see exactly where a function was called from, so you can see if it is being called from two different points.

    If that doesn't work, move the debugger statement to right above this line:

    friends.bill = {
    

    and repeat until you find the problem.