《Javasctipt》変数(プロパティ)のスコープについてわかりやすく解説

JavaScript

Javascriptのスコープの種類

今回は@matsubyさんの以下の記事を参考にして、記事を執筆していきたいと思います。

JavaScript中級者への道【3. 関数スコープ】 - Qiita
### JavaScript中級者への道【3. 関数スコープ】 ## JavaScriptのつまづきやすそうなところ - (

とてもわかりやすい解説で勉強になりました。ありがとうございます。

4つのスコープの種類

今回の記事で紹介するスコープの種類は以下の4つです。

グローバルスコープ

関数スコープ

ネストした関数のスコープ

ブロックスコープ

ではこれら1つずつ解説していきたいと思います。ちなみにスコープという用語をいまいち理解していない方もいらっしゃるかもしれないので簡単に確認しておくと

プログラミングにおけるスコープ(英: scope, 可視範囲)とは、ある変数や関数などの名前(識別子)を参照できる範囲のこと。通常、変数や関数が定義されたスコープの外側からは、それらの名前を用いるだけでは参照できない。このときこれらの変数や関数は「スコープ外」である、あるいは「見えない」といわれる。

出典: フリー百科事典『ウィキペディア(Wikipedia)』

https://ja.wikipedia.org/wiki/スコープ

つまり、定義した変数や関数が使える範囲のことをスコープって言います。

グローバルスコープ

関数の外で定義されたプロパティはグローバル変数となり、どこからでも参照することが可能です。初心者の方などは「どこからでも参照できるのか!わかりやすくていいじゃん!」と思うかもしれませんが、グローバル変数は全ファイル共通でどこからでも参照可能のため、名前が重複してしまうと意図していないところでの参照が起こったりするリスクが発生するので良くないです。

関数スコープ

関数内で定義されたプロパティはローカル変数と呼ばれ、外部からの直接アクセスはできません。ちなみに関数の場合も同様で、関数内の中でさらに定義したローカル関数も外部から呼び出すことはできません。以下のサンプルコードではglobalFuncを呼び出した時にlocalFuncもセットで呼び出すようにしているのですが、ローカル関数を定義しているスコープ内のみローカル関数を呼び出すことが可能です。

外のスコープからローカル変数に値を代入することは可能です。しかし今回の場合ですとglobalFuncで呼び出した場合にコンソールに出力される値は変わりません。その理由は関数呼び出しごとに初期値がセットされるからです。

グローバル変数とローカル変数の名前が変わってもスコープが異なるため、問題ありません。

ネストした関数のスコープ

ネストした関数の場合は「子関数で定義されたスコープの変数に親関数からアクセスは不可能」「親関数のスコープで定義された変数に子関数からアクセスは可能」です。

ブロックスコープ

普段あまり御目に掛かるチャンスが少ないような気がするブロックスコープですがvarletの使い方によってスコープが異なります。varで変数を定義した場合は定義したスコープが包含する部分は全てアクセス可能になります。一方letを使って変数を定義した場合はブロックごとのスコープが割り振られます。

筆者
筆者

以上がJavascriptのスコープに関する基本的な内容の解説でした!読んでくれた方やわかりやすい記事を書いてくださった@matsubyさん、本当にありがとうござました。

エンジニアにおすすめのアイテム

記事の内容とは別に、僕自身が保有する業務効率アップ、スキルアップを後押しするお勧めアイテムを紹介します。割とガチでお勧めなのです。

目の保温マッサージ

エンジニアの1日の業務は大半がディスプレイと睨めっこ。帰宅すると目が疲労で非常に重くなります。ひどい時は軽い頭痛になったりと結構深刻。そこで僕自身が毎日使っているのが目元マッサージ機です。

アイマッサージャー 二年間保証 最新グラフェン加熱技術 目元マッサージャー

アイマッサージャーを使ってから、翌日の疲労感がだいぶ軽減されました。またマッサージ自体とっても気持ち良くて、布団に入るのが毎日楽しみになりました。コスパまじで最強アイテムです。

座椅子をゲーミングチェア風に

ディスプレイの長時間利用と同時にエンジニアは座椅子の上に何時間も座る運命にあります。椅子が快適だと疲労度が大きく変わると思った私は以下の2点のアイテムを購入しました。

IKSTAR クッション 低反発 座布団 第五世代 オフィス IKSTAR クッション 低反発【メーカー直営・1年保証付】 ランバーサポート

気に入りすぎて、オフィス用だけではなく、自宅用も購入してしまいました。導入してから長時間座ることでのお尻の痛みや、腰の痛みが激減しました。なので体の健康を考えるなら、導入するべきアイテムですね。

タイトルとURLをコピーしました