JavaScriptの変数名について
変数名は、どのように使うか分かるようにしましょう。
数行のプログラムなら大丈夫ですが、大きなプログラムになると「何のための変数だったかな?」という状況になります。
名前を決める上で、いくつか規則があるので注意して下さい。
アルファベットか、アンダースコア( _ )から始める
(例)name, score, _player
先頭文字に数字( 0〜9 )は使えない
(例)78yearなどはダメ year78 はOK
大文字と小文字は区別される
(例)name と Name は別の変数
予約語は使えない
(例)for, else, let など
予約語はプログラムで使う用途が決められているものです。今後、使いそうなものも予約語になっています。
詳しくは「javascript 予約語」で検索して下さい。
JavaScriptプログラミングしてみよう
スコープについて学習します。
右側のエディタには、次のプログラムが表示されてます。
これを変更しながら進めます。
これは1から10までを合計していくプログラムです。
すべて足すと55ですね。
合計した結果だけ欲しいのでconsole.logをfor文の外へ出します。
8行目でエラーになってしまいました。
変数totalが宣言されていない、というエラーです。
プログラミングにはスコープという概念があります。
見える範囲(使える範囲)があるのです。
上のエラーは、for文の中で宣言した変数totalを、for文の外で使おうとしたためエラーになりました。
ここで変数totalの宣言をfor文の外へ出してみます。
エラーは無くなり、目的通りの表示ができました。
for文の外で宣言した変数は、for文の中でも使用できます。
スコープは、for文だけで発生するものではありません。
中カッコ { } によるスコープを見てみましょう。
これは問題なく、すべての変数が見えますね。
問題です。
次のプログラムの実行結果を考えて下さい。
もし、エラーになるなら何行目でしょうか。
13行目で変数cが見えないためエラーになります。
問題です。
次のプログラムの実行結果を考えて下さい。
もし、エラーになるなら何行目でしょうか。
13行目で変数bが見えないためエラーになります。
問題です。
上のプログラムが正常に動くように変更して下さい。
中カッコと変数a,b,cの代入の場所は変えずに対応しましょう。
5行目でbとcの宣言をしていますが、行を分けてもOKです。
7行目と9行目のletは削除します。
上の問題でletを消さない場合、正常に動きません。
次のプログラムを見て下さい。
変数aを2箇所で宣言してますが、エラーになりません。
7行目の宣言は中カッコの中にあるため、5行目の変数aとは別のものとして扱われます。
そのため10行目では、5行目の変数aの値が表示されます。
これらもスコープの仕様の1つです。
問題です。
出力結果を考えて下さい。
8から10の中にlet宣言がないため、9行目のaは7行目で宣言されたものが使われます。
情報は劣化します
お疲れさまでした。
スコープについて学習しました。
今回は変数を中心とした話でしたが、他にも色々とあります。今のうちにしっかり覚えましょう。
当講座では、初心者向けに情報量を少なめにしています。深く知りたいと思うときは検索して下さい。
ただし、調べるときは複数のサイトを見るようにしましょう。プログラムも環境もどんどん進化していきます。そのため古い情報が残っていたりします。見比べて正しい情報を取れるようにして下さい。