notitie

日々感じたことをメモ書き

varとletとスコープについてのメモ書き

よく耳にするvarとletの使い分けについて整理できていなかったのでメモ。

これは変数のスコープが、関数スコープかブロックスコープかの違いによる。

var

①関数スコープ

②変数の巻き上げをする

  • varは関数内のどこでも宣言できる
  • 関数内のどこで宣言しても先頭で定義したものみなされる(巻き上げとはこういうこと)
  • なので、varで宣言する際は先頭に全て変数を書いてまとめておくのが暗黙の了解

let

①ブロックスコープ

  • JavaScriptにはブロックスコープという概念はなかったが、letが出てきたことでブロックスコープを使えるようになった
  • varはブロックを作らないが、letで変数を宣言するとletはブロックを作り、ブロックスコープとなる。

②変数の巻き上げをしない。(厳密に言うと巻き上げはするが参照はしない)

 

共通メモ

変数宣言時にvarやletを省略するとグローバル変数になる。関数内で宣言したとしてもグローバル変数となる。

 

参考記事

var,let,constの違いは、ブロックスコープと巻き上げ - 30歳からのプログラミング

var/let/constの使い分けのメモ - Qiita

JavaScriptのスコープ総まとめ - Qiita 

グローバルスコープとローカルスコープ(関数スコープとも呼ぶ)などについて