Reputation: 301
I'm new to the JavaScript World and I'm confused after I knew a lot about the global object (usually window) and knew it's just an object like any object I'd create and that var set properties in the global object unlike let
after that Is there any difference between window.a = something (like in any object) and var a = something?
Upvotes: 0
Views: 570
Reputation: 32166
In the global context, using var
vs assigning to window
are indeed quite similar. However, yes there are a number of differences. Here are a few I can think of:
var
declarations are hoisted, which means that you can use a variable declared with var
before you've declared it. On the other hand, trying to use something assigned to window
before that assignment has occurred will produce a ReferenceError
:// This is okay. The variable declaration is hoisted, so you can use it before
// it's been declared (although it won't be assigned its value until later).
console.log(a);
var a = "hello world";
// On the other hand, without var, this creates an error.
console.log(a);
window.a = "hello world";
var
cannot be removed from the global object, but simple assignments to window
can be removed:var a = "hello world";
console.log(a);
delete window.a; // Does nothing for `var`.
console.log(a);
window.a = "hello world";
console.log(a);
delete window.a; // This will delete it, further access creates a ReferenceError.
console.log(a);
var
declarations are scoped to the current execution context. In the global scope, this doesn't differ from assigning to window
, but within a function, a var
will disappear when the function returns.function foo() {
var a = "hello world";
console.log(a);
}
foo();
console.log(a); // ReferenceError
function foo() {
window.a = "hello world";
console.log(a);
}
foo();
console.log(a); // still exists here
Upvotes: 2
Reputation:
Nope, except for in Node.js, where having a = 5
or var a = 5
(along with let
and const
) will not assign the value to global.a
. You have to explicitly say global.a = 5
.
Upvotes: 0
Reputation: 460
You use window.a =
if you want the variable a
global. This means that any JS code has access to this variable. While the var a =
is the commonly used way to declare a variable. In this case, the variable is only accessible inside its container.
Upvotes: 0