#2 恋に落ちる宣言 -Y’all, I've fallen in love!-

絵子えこ、私はBL物が好きだ」

「2話冒頭から衝撃のカミングアウトきたね」

「というわけで今日は変数の宣言の話だ」

「変数の宣言、ってカミングアウトすることだったっけ?」


 放課後、情報処理部の部室。

 今日も篠宮樹里しのみやじゅり瀬尾絵子せのおえこの二人が部活動に勤しんでいる。


「じゃあ、いつものようにJavaScriptで表現してみよう」

 と、樹里は部の備品であるMacBookでお気に入りのテキストエディタを起動し、入力する。


----

var eko = “fujoshi";

----


「……ちょっと待て」

 絵子の拳が勢い良く振り下ろされた。MacBookが二センチ宙を舞い、ペン立てが二つ同時に倒れた。


「なんで変数の名前がekoなのよ。宣言したのあんたでしょ」

「この構文では、変数ekoを宣言し、『fujoshi』という文字列を代入したわけだ」

「聞いてる? だから変数の名前がおかしい、ってば」

「ちなみに、JavaScriptの変数にはあらゆる文字、ドル記号($)、アンダースコア (_)が使える。ただし数字は先頭には使えない」

「ルールに合ってるかどうか聞いてんじゃないのよ。まずjuriに直せ、つってんの」

「使えるのはあくまで『文字』だ。要は記号以外なら実は日本語だって使えるから、こう書いてもいい」


----

var 絵子 = "fujoshi";

----


「ほんとだ、エラーにならない……だから『樹里』でしょうよ、そこ。書き直したんならそこも直してよ」


「で、JavaScript……というか、一般的なプログラミングにおいて『変数の宣言』とは、文字列とか数値といったデータを入れておくための『箱』に名前をつける、ということを意味している」

「あ、もう次の話題に進んでるのね……」

「他の言語だと、同時にデータ型も指定する必要があるんだけど。これは文字列用の箱だ、とか、数値用だ、とか。ただ、JavaScriptの場合はデータの内容に応じて柔軟に箱の形を変えてくれる」

「気がきくヤツなのね」

「で、その箱にデータを入れることを『代入』。箱に入ったデータを呼び出して使うことを『参照』と呼ぶ」

「この行き場のない怒りもぜひ参照して欲しいんだけど」


「さて。この変数の宣言において重要なのが、『スコープ』という概念だ。すなわち、その宣言がどこまでの範囲で通用するのか、ということ」

「ちょっと難しくなったわね。言ってることが」

「絵子の唇は私だけのものよ」

「…………え、ちょ、ちょっと。なな何言ってるの、あの」

「これをこの場で言っただけなら、二人の間でだけ通用する。全校集会で宣言すれば、この校内で通用する。『おかえりなさ〜い』の街角メッセージのコーナーで宣言すれば、福井県全域で通用するわ」

「……びっくりさせないでよ、もう。あと話題がローカルすぎるわ」

「では、これも実例を挙げて説明しよう」


----

var 絵子 = "fujoshi";

console.log(絵子);

----


「……まだ続くの? 私のいわれなき疑惑」

「そろそろ受け入れなさい。で、このコードを実行すると『fujoshi』という文字列が出力されるな」

「まあ、当然と言えば当然ね。あくまで実行結果が、だけど」

「このコードをもうちょっと細かく説明するとね。『絵子』っていう変数がグローバルスコープ、つまりプログラム全体から参照できる変数として宣言されている。絵子の趣味嗜好は白日の下に晒されることになるわけだ」

「ほんと、イヤな言い方するわね」

「じゃあ、これを踏まえて次」


----

var 絵子;

function comingout() {

 絵子 = "fujoshi";

}

comingout();

console.log(絵子);

----


「あ、インデントには全角スペースを使用しておりますが、そのままコピペしても動きますので」

「誰に向かって言ってんの?」

「いや、わざわざ動くかどうか検証していただいている方もいるそうなので」

「ありがとうございまーす」

「これもさっきと同じ、『絵子』はグローバル変数として宣言されている。だから、comingoutという関数の中、つまりはローカルな環境からでも変数『絵子』に値を代入できるわけだ。結果、絵子の趣味嗜好は無事に露呈する」

「その無事っていうのが意味わかんないんだけど。プログラムの動きはわかったけど」

「はい。じゃあ次」


----

function comingout() {

 var 絵子 = "fujoshi";

}

comingout();

console.log(絵子);

----


「今までと違い、『絵子』は関数の中だけで使える変数、いわゆるローカル変数として宣言されている。これを実行すると……」

「……エラーになったわ。絵子 is not definedだって」

「このように、関数の中で宣言された変数は、関数の外からは認識することができない。スコープ外である、という言い方もよくされる。絵子の秘密は守られたわけだ」

「秘密というか、誹謗中傷のレベルだけどね」


「というわけで、何かを宣言する時は場所を選びましょう、という話でした」

「…………そういう話だったっけ?」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援した人

ビューワー設定

文字サイズ

背景色

フォント

一部のAndroid端末では
フォント設定が反映されません。

応援の気持ちを届けよう

カクヨムに登録すると作者に思いを届けられます。ぜひ応援してください。

アカウントをお持ちの方はログイン

フォロー機能を活用しよう

カクヨムに登録して、気になる小説の更新を逃さずチェック!

アカウントをお持ちの方はログイン

フォロー機能を活用しよう

カクヨムに登録して、お気に入り作者の活動を追いかけよう!