Open dev console (or in node.js), enter the following code by sequence:
a = 1
var a = 2
const a = 3
As you can see it works, but if you enter all the code at once, you will get an error, which I think is more reasonable
I guess the only difference is hoisting, if you input all the code at once, it will be treated as:
var a
a = 1
a = 2
const a = 3
But I don't understand why it works when you enter line by line, also if you skip the first line, you get an error as expected
In global scope of the environment a variable can be assigned and declared irrespective of the type, therefore when you enter following code in sequence, it works.
z = 1
var z = 2
const z = 3
value of z is 3 now
Now lets say we execute all this at once
z = 4; var z = 5; const z = 6;
value of z is still 3
the interpreter in this case will throw error because here it will try to execute all the above statement once as a block and now it has found multiple declaration for 'z' and thus will throw an error for the whole block and will not execute even the first part i.e z = 4;
the statement where everything is executed at once is equivalent to
(function foo(){ z = 4; var z = 5; const z = 6; })();
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