Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ES6/JavaScript - declaring variables without let/const

Tags:

javascript

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!

like image 552
Combine Avatar asked Apr 06 '16 07:04

Combine


3 Answers

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/

like image 157
xcodebuild Avatar answered Oct 17 '22 17:10

xcodebuild


In this case, x becomes a global variable. Try to avoid this as global variables can be hard on the browser.

like image 2
Bálint Avatar answered Oct 17 '22 18:10

Bálint


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.

like image 1
Vinícius Melo Avatar answered Oct 17 '22 18:10

Vinícius Melo