alhassy / alhassy/JavaScriptCheatSheet

Error about using var

Aberta
#1 0 comentários 1 reação 1 responsável Reivindicada por @alhassy Ver no GitHub
Linguagem predominante
Sem dados de linguagem
Estrelas
221
Forks
23
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

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

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.