So, I was writing a function that determined the differences between the starting `window`, and the new `window` whenever the function is called. However, nothing was logged:

```
var differences = (function() {
    var original = {};
    for (var i in window) {
        if (window.hasOwnProperty(i)) {
            original[i] = window[i];
        }
    }

    // this is the area I refer to further down in my post

    return function() {
        // should find differences between original and new window
        for (var i in window) {
            if (!(original.hasOwnProperty(i)) && window.hasOwnProperty(i)) {
                console.log(i + ": " + window[i]);
            }
        }
    };
})();

var abc = 5;
differences(); // nothing is logged

```

So, I decided to check what `abc` was in the original copy:

```
// after first for loop in foo differences function
console.log(original.hasOwnProperty("abc")); // true
console.log(original.abc);
// this logs that abc is defined as undefined

```

One would think that because `differences` is defined first, that `abc` shouldn't exist in the `original` Object. But, since it does exist in the `original` Object, why is it defined as `undefined` and not 5?

But, what confuses me even more is the `hasOwnProperty` line I wrote

```
console.log(original.hasOwnProperty("abc"));

```

when ran in JSFiddle it logs `false`, but if I make a blank HTML file with JS, it logs `true`.

Can someone explain these odd occurrences?