Ok, my question is simple: In JavaScript / ES6
what happens when you have something like
x = 5;
console.log(x); // 5
is the interpreter automatically adding "let" at runtime or why is this working without errors?
Edit: Strict Mode The syntax of ES5 allowed for something called implicit globals, which have been the source of many frustrating programming errors. In short, if you forgot to declare a variable with var , JavaScript would merrily assume you were referring to a global variable. If no such global variable existed, it would create one! You can imagine the problems this caused.
I see. Thank you for all comments. I now understand why is this happening. Thanks!
By omitting let
, const
, or var
in non-strict mode, you create a property on the global object.
By the way, babel
will add "use strict";
by default. So you will get a error with babel
.
You can try it here: https://babeljs.io/repl/
In this case, x becomes a global variable. Try to avoid this as global variables can be hard on the browser.
then you're not declaring/defining a variable; instead you're creating/defining (or overwriting) some global/window obj property
x = 5;
is the same as
window.x = 5;
You can check it with window
, or with the this
keyword in your browser console; look at the global/window obj properties, you'll see the x
property there.
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