First Example:
In the following example: http://jsfiddle.net/maniator/ScTAW/4/
I have this js:
var storage = (function () {
var store = [];
return {
add: function (item) {
store.push(item);
},
get: function () {
return store;
}
};
}());
storage.add('hi there')
console.log(storage, storage.get(), storage.add('hi there #2'));
And here is what gets printed to the console:
Object
[hi there, hi there #2] undefined
One would think that the console should only say:
Object
[hi there] undefined
becase the second push did not happen until after the value was logged, therefore it should not be displayed.
Second Example:
In the following example: http://jsfiddle.net/maniator/ScTAW/5/
I am using the same storage
variable but I log like so:
storage.add('hi there')
console.log(storage, storage.get(), (function() {
storage.add('hi there #2');
console.log('TESTING');
})());
What gets printed to the console is:
TESTING
Object
[hi there, hi there #2] undefined
hmmmm well that is odd now isnt it? One could expect to see:
Object
[hi there] undefined
TESTING
Why is this happening? What is going on behind the scenes of the console logging mechanism?