40歳から始める8分間プログラミング入門9

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行目で宣言されたものが使われます。



 

情報は劣化します

お疲れさまでした。
スコープについて学習しました。
今回は変数を中心とした話でしたが、他にも色々とあります。今のうちにしっかり覚えましょう。

当講座では、初心者向けに情報量を少なめにしています。深く知りたいと思うときは検索して下さい。
ただし、調べるときは複数のサイトを見るようにしましょう。プログラムも環境もどんどん進化していきます。そのため古い情報が残っていたりします。見比べて正しい情報を取れるようにして下さい。