《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さん、本当にありがとうござました。

エンジニアにイチ押しアイテム

目の疲労回復グッズ

ディスプレイをずっと見続けた時の目の疲労感ってすごいですよね。血行が悪くなっているというかズーンて重い感じがして、ひどい時は気持ち悪くなったりした経験をもつ人も多いのではないのかと思います。目って今後生きて行く上で非常に大切なものですし、ちゃんとにケアしていきたいものです。そこで私が日常的に使っている目のマッサージアイテムを紹介します。

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

私は寝る前必ず使用しています。15分間目を40°で保温&マッサージしてくれて、本当に極楽の時間です。その後は快眠で、翌日の朝の目の疲労度が全くなくなりました。Amazonのレビューがこの商品の良さを物語っています。

筆者
筆者
303件レビューがついてて、評価が4.7と購入した方の殆どが「非常に満足」しているコスパ最強!超オススメのアイテムです!

コスパ最強20㎏×2ダンベル

実は筋トレって記憶力を向上させる効果があるんです。米国のジョージア工科大学が筋トレを20分間行なうと、記憶力が10%ほど向上するこという研究結果を最近発表したほどです。私はここのところ、老化からか体型が崩れてきたのに危機感を覚え購入。実際に筋トレしてみると筋トレ後のすっきり感がやばい。勉強の集中力も確かに上がるような気がしました。また、腕立てとかじゃ鍛えにくい肩なんかもパンパンになるので、男らしい体型を手に入れたいなと少しでも思っている人は買うべきアイテムだと思います。中でも以下のダンベルはAmazon内での評価が非常に高いので迷ったらこれを買いましょう。

ダンベル 【最新進化版・3in1】Wolfyok 純鋼製アレー アレイ 20kgセット(10kgx2) 30kgセット(15kgx2)
筆者
筆者
マシンを使って筋トレすると自重の筋トレ系、腕立て・腹筋・背筋が だいぶ楽になるので習慣化しました!また積極的にランニングしたり食生活を気に掛けるようになるので購入することをお勧めします! (体験談)

座椅子DIYで疲労防止

長い間椅子に座って作業することはエンジニア、理系学生にとってはつきものだと思います。ですが、この椅子の性能によって作業後の疲労感が全く異なるということを意識したことがありますか?私は以下の2つのアイテムを使って座椅子をゲーミングチェア並みにアップデートしました。おかげで姿勢が安定し、作業後の疲労感も減りました。また何より集中して作業に打ち込めるようになりました。

IKSTAR クッション 低反発 座布団 第五世代 オフィス IKSTAR クッション 低反発【メーカー直営・1年保証付】 ランバーサポート
筆者
筆者
座椅子にホールド感が出て、座り心地が格段に向上します。長時間座っていても疲れにくくなるので引きこもりにならないように注意しましょう!作業に夢中で1日中座りっぱなしだった経験があるので...

コードの可読性を高める

自分が大型ベンチャーの内定インターンに初めて参加した時、周りの超優秀なエンジニアの方々のコードをみて自分のコードの汚さに絶望しました。その時自分のマネージャーに勧められた本がリーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニックという超有名な一冊です。美しいコードを書くためのエッセンスが凝縮されています。エンジニアを職種として選ぶ方は読まない理由がない一冊です。自分もこの本を読んで、かなりコーディングスキルが向上したと感じています。

ネットワークの基礎を押さえる本

ITの基礎がおぼつかなくて、ネットワークの話についていけなかった時、早稲田大学のエンジニアの友人が勧めてくれたのがネットワークはなぜつながるのか 第2版 という本です。ハードウエアから、理論までネットワークの基礎が非常にわかりやすく解説されています。「TCP」「IP」「リゾルバ」という用語を説明できないエンジニアは間違いなく買ったほうがいいです。自分は知らなくてバカにされたので。笑

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