中の人はエクセルVBAではわりとガチのプログラムは組めるので、「プログラミング」の基礎的な部分はわかるのね。
だけど、JavaScriptのIf文が、どーーーしても咀嚼できなかったのだけど、
その理由がやっとわかった!意外とこれって盲点だと思うぞ?!
プログラムにおけるIfは基礎
エクセルVBAに限ったことではないのだと思うけど、何かプログラム書こうって思ったとき、必ずIf文、あるいはそれに相当する条件分岐の文ってあると思うのよ。
何か作ろうと思ったら、条件分岐は避けられないからね?
VBAの場合・・・
''水見式 Dim ret As String ret = 水見式をやった結果 If ret = 水の量が変わる Then MsgBox "強化系です" ElseIf ret = 水の色が変わる Then MsgBox "放出系です" ElseIf ret = 葉が動く Then MsgBox "操作系です" ElseIf ret = 水に不純物 Then MsgBox "具現化系です" ElseIf ret = 水の味が変わる Then MsgBox "変化系です" Else MsgBox "特質系です" End If
※上記の記述では水見式の結果を変数retに格納することはできません。上記は例えですのでご了承ください。
こんな感じでね、
If 条件1 Then 条件1が真(True)だったら実行、偽(False)だったら何もせず下の行へ移行 ElseIf 条件2 Then 条件2が真(True)だったら実行、偽(False)だったら何もせず下の行へ移行 ElseIf 条件3 Then 条件3が真(True)だったら実行、偽(False)だったら何もせず下の行へ移行 Else どの条件にも当てはまらない場合ここが実行される End If
てな感じでね。IfやElseIfやElseからの、最後EndIfみたいな流れがあるって染みついておるのですな。
VBAってね(他の言語も似たようなのあるかもしれないけど)、お決まりの構文があるのよ。For~NextとかDo~Loopとかね。
jsの場合・・・
//水見式 var ret = 水見式をやった結果; if(ret = 水の量が変わる){ console.log("強化系です"); }else if(ret = 水の色が変わる){ console.log("放出系です"); }else if(ret = 葉が動く){ console.log("操作系です"); }else if(ret = 水に不純物){ console.log("具現化系"); }else if(ret = 水の味が変わる){ console.log("変化系です"); }else{ console.log("特質系です"); }
※上記の記述では水見式の結果を変数retに格納することはできません。上記は例えですのでご了承ください。
jsではこんな感じになります。
これの何がわからなかったかと言いますと・・・
なんで1回1回{}でくくってるの??
というしょうもないところなのです!!
もしかしたら、素直に0ベースでjsを学べばさ、何も疑問に思わないのかもしれない!
でも!!こっちは気になっちゃうのよ!!
ifからのelseifからのelseの流れなのに、なんで1回1回閉じてるの??おかしくない??
でもどんなサイトのIf文の説明を見てもね、取り合えずこういう記述の仕方ですよ、しか書いてなくて。
そっからもやもやが止まらなくなってしまったのです。
でもそのもやもやがやっと晴れた!!!なぜなら!!!
jsにElse Ifなんてなかった!!
これですよッ!!
もうちょっと触れると、IfはIf、ElseはElseで完結した記述の仕方で、2つ繋がった構文ではなかったし、そもそもElse If は存在していなかった!ってことです。
これ、意外と盲点だと思うのです。
だって初心者向けjsのサイトには、そんなこと、一言も書かれてなかったもの!
(いや、厳密にいえば書かれてたのかもしれないけど、こっちが理解できるほど知識が追いついてなかったのかも)
そりゃそうだよね、普通はそんなとこ触れないほうが初心者にとってはわかりやすいと思うもの。自分はただVBAの記述のクセが抜けないだけだからさ。
でもわたしには必要だったーー!
jsにはIfとElseしかなかったの!「else if」は、Elseの発展系の書き方だったのですね。
まとめ
こうやってすっきりしてから見直すと、自分の知識の足りなさ+VBAのクセが顔を出してどんどん混乱しちゃってるのがわかるわー。
わざわざelse ifなんて存在しませんよ、って書いた方が混乱をきたすのでね、初心者向けサイトのわかりやすさが身に染みるのですが、意外とこの事実、知らない方もいらっしゃるのでは?!
だって、else ifって書き方をさんざん教わった後、else ifの存在を疑うなんて普通はしないでしょ?
まぁ脱初心者向けサイトを覗けばきっと書かれている情報なのかもしれませんが!
ってことで、今回それに気づかせてくださったuhyohyo.netさんとQiitaさんです。
ありがとうございます!!
参考 JavaScript初級者から中級者になろうuhyohyo.net 参考 C言語にif~elseif~else構文なんて無かったことに今更ながら気が付いた件Qiitaこのお二方がおられなければ、jsから遠ざかっていたかもしれない・・・
インターネットは情報の海ですからね、早い段階で理解できてよかったー。
それじゃーお疲れさまでしたーーー!!!!