# Same variables name in JavaScript functions

Let there be the variable `num` both outside the function and inside. In this case, any changes to the local variable `num` do not affect the global variable `num`:

`let num = 1; // the global variable function func() { let num = 2; // the local variable console.log(num); } func(); // call the function, 2 will be output console.log(num); // shows 1 - the global variable hasn't changed`

But, if we forget to declare the local variable `num` through `let`, then the local variable `num` will not be created inside the function, but the global variable will simply change:

`let num = 1; function func() { num = 2; // we forgot to write let - it changes the external variable console.log(num); } func(); // call the function, 2 will be output console.log(num); // shows 2 - the variable has changed`

There can be two situations here: either we really wanted to change the global variable (then everything is OK), or we forgot `let` and accidentally changed the global variable.

The second case is a subtle error leading to unpredictable script behavior. Therefore, always, when introducing a new variable, declare it through `let`.

Determine what will be output to the console without running the code:

`let num = 1; function func() { num = 2; } func(); console.log(num);`

Determine what will be output to the console without running the code:

`let num = 1; function func() { let num = 2; } func(); console.log(num);`
←→
↑
en ru