3.7 本章のまとめ

この章では、次のようなことを学習しました。

Pickup Lecture

  • スコープとは、「変数が使える範囲」のこと。
  • スコープを正しく理解することで、予期しないエラーや名前の衝突を防ぎ、コードの整理につながる。
  • スコープには、グローバルスコープとローカルスコープの 2 種類がある。
  • var は関数スコープという不都合に広いスコープを持つため、昨今の開発では使われなくなってきている。
  • var の代わりに使われるようになったのが、let(変数)と const(定数)である。
  • let と const はブロックスコープを持ち、if 文や for 文の { } を抜けた瞬間、その変数は消滅する。
  • let は再代入が可能だが、 const は初期化子を持ち、同じスコープの中では再宣言できない。
  • typeof 演算子は変数の型を文字列で返す。typeof null が “object” になる点は歴史的仕様バグとして注意が必要
  • JavaScript は、プログラムで変数を使う時に、内側のスコープから外側のスコープへ変数を探しに行く。この仕組みをスコープチェーンという。

JavaScript 入門では、あれほど使ってきた var という変数が、今やプログラミングの現場では使われなくなってきている、という事実に、皆さん驚かれたかもしれません。「それでは、何のために今まで var でソースコードを記述したり勉強してきたんだ?」と疑問に思われた人もいるでしょう。しかし、先にもお話ししましたが、世の中に動いているレガシーなシステムの上では、まだ直されないままの古いスタイルの JavaScript コードが動いていたりします。皆さんが、今後向かわれる業務の中で、そのようなシステムに出くわすことも少なからずあることでしょう。その時にこそ、本章で学んだことが生きてくると思います。

スコープと言われても、最初のうちはなかなかイメージしにくいしピンとこないかもしれませんが、スコープという概念が曖昧なままで変数を使うことは、目に見えないところで、いつの間にか数値が書き換わってしまうような大きなトラブルの原因につながります。

自分が期待した通りにプログラムが動かない、値が期待したものにならない、といったトラブルに見舞われないためにも、変数の持つスコープについて、正しい理解が必要になってきます。最初は難しいかもしれませんが、全てを頭で理解しようとするのではなく、まずは使いながら慣れ親しんでいきましょう。