0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JavaScript スコープとクロージャーについて

Posted at

クロージャーの前にスコープとは

クロージャーを語るにはまず、スコープについて知っておく必要があります
スコープには以下の種類があります

  • グローバルスコープ
    • 最高階層で宣言されその変数はどこからでも使用出来る
  • ローカルスコープ
    • グローバルスコープ以外の変数
    • 関数スコープとブロックスコープに分けられる
  • 関数スコープ
    • 関数の中で宣言される変数で関数の中でしか使用出来ない
  • ブロックスコープ
    {}で閉じられたブロックの中で宣言された変数で{]の中でしか使用出来ない

クロージャーとは

上記のスコープを踏まえて
クロージャーの使用例を↓に記述します

const counter = () => {
  let x = 0;
  return () => {
      return x++;
  }
}

実行すると下記にようになります

const ct1 =  counter();
const ct2 =  counter();

console.log(ct1());  // 0
console.log(ct1());  // 1
console.log(ct1());  // 2
console.log(ct2());  // 0

クロージャーを使用することで意図せず変数が書き変わってしまうことが防げます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?