alhassy / alhassy/JavaScriptCheatSheet

Error about using var

Open
#1 0 comments 1 reaction 1 assignee Claimed by @alhassy View on GitHub
Dominant language
No language data
Stars
221
Forks
23
PR merge metrics
No merged PRs in 30d

Description

> In the same way, for the same purpose, we may use `var` but it has undesirable properties; e.g., its declarations are in the global scope and no error is raised using `var x = ⋯` if `x` is already declared.

This is at the end of the _Types_ section. First bullet point of three.

The part that says _"its declarations are in the global scope"_ is incorrect.

Later, in the _Scope and Statements_ section, you say...

>`let`, `const` declare local bindings; `var` always makes global ones!

Which again is incorrect. You can try this...

```javascript
function f() {
var x = 1;
}
console.log(x); // => Uncaught ReferenceError: x is not defined
```

...and see that `x` is **not** defined in the global scope. It will be local to the `f` function.

The difference about `var` and `let` in what regards scope is:

- `var` bindings reach either _function scope_ or the _global scope_. `let` bindings can also be limited to _block scope_.
- `var` declarations are hoisted to the start of the scope. `let` bindings are not (*)

(*) To be more precise they are but have a mechanism that prevents usage before declaration and will throw an error, while `var` won't.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.