alhassy / alhassy/JavaScriptCheatSheet

Error about using var

Aperta
#1 0 commenti 1 reazione 1 assegnatario Rivendicata da @alhassy Vedi su GitHub
Lingua principale
Nessun dato sulla lingua
Stelle
221
Fork
23
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

> 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.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.