alhassy / alhassy/JavaScriptCheatSheet

Error about using var

未關閉
#1 0 則留言 1 個 reaction 已指派 1 人 已被 @alhassy 認領 在 GitHub 檢視
主要語言
沒有語言資料
星號
221
分支
23
PR 合併指標
30 天內沒有已合併 PR

描述

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

貢獻指南

這個儲存庫沒有索引到貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。