I was doing some javascript scope tests and I faced with a problem with the values of the variables.
First I executed this code:
function changeName() {
    name = "Ronaldinho";
}
changeName()
console.log(name);
The output in console was: Ronaldinho
Then I performmed only this code:
console.log(name);
The output in console still was: Ronaldinho
I was using Google Chrome. I tried to clean cache, all options of page reload (ctrl + F5/ shift + F5 / ctrl + R/ shift + R / Right click in reload icon and "Force reload and clear cache"), clear the cache, console clear, enable de option "Disable cache (while DevTools is open)".
It only works when I close and open a new tab.
If you forget the var keyword in javascript, the variable will be created in the root object. In a browser, the root object is window. So you'll find your variable in window.name. If you want to delete it you can do delete window.name
EDIT : In the Chrome console, the executed code is protected from that. Chrome use an other object than window. You'll find your variable in this.name. So you can delete it with delete this.name.
Change the name of your variable, try "myName" instead. Since you never use the "var" keyword, name is in the global scope.
But something else happens: window.name is already taken! Because a window has a name associated with it. (see window.open for further information)
Or better: In 99% of cases use the var keyword to declare a variable, the rest of the time, don't declare a variable (meaning window[anyVariableName] is not truly declaring a variable, rather than defining a new key to the window object, implicitly available everywhere in a browser's context).
The final code (if you want to keep the variable name):
var name;
function changeName() {
    name = "Ronaldinho";
}
console.log(name); // undefined
changeName()
console.log(name); // "Ronaldinho"
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With