JavaScript講座をやっているのだけれど、受講生の方に例題を解いてもらうと、「何でこれで動かないのだろう?」と考え込んでしまうケースが時々ある。だいたいは長くても5分ぐらい試行錯誤すると「ああ、これが原因か!」とわかるのだけれど、講師の実力が疑われる場面だけに、かなりあせる(笑)。
ところが先日、「なぜこれがエラーにならないのだろう?」というケースがあった。ひとまず動き出すのだが、なぜか途中で止まってしまう。でもコンソールにはエラーメッセージが表示されない。
止まっている(止めている)箇所を探ってみたら、問題のコードは次のものだということがわかった。
if (picnum => 5) { clearInterval(timerID) }
タイトル読んだ人は分かったと思うけど「=>」は「以下」の意味には使えないので、「>=」が正しい。 でも「=>」か「>=」なんてあまり意識しないよな〜。
「何で構文エラーにならないんだろう?」と少し考え、自分のパソコンでも似たようなコードを動かしてみたが、自分のパソコンではエラーになるようだ。あまり時間を割くわけにも行かず、結局その日はわからずじまい(今考えると自分のパソコンでは「=<」を試していたんじゃないかな。こちらはエラーになる)。
今日受講生の方からソースを送っていただいて眺めていたら、「なんだアロー関数ジャン」。
ifの条件でいつも5を返す関数を定義していたのだ。「->」はポインタっぽいから「=>」にしたのかもしれないけど、ちょっと紛らわしいかな〜。間違える初心者、結構いそうだな〜。
自分が無意識にやっていることを意識させされる
このケースもそうだけど、初心者の人といろいろやっていると、自分が無意識にやっていることを意識させられることが多い。 「以上」は「>=」とほとんど無意識に打ってる。だから「=>」と書かれていても最初は気が付かなかった。
ちなみに私が「>=」と打つケースはまずないのも気が付かなかった原因のひとつかもしれない。「a >= b」とは書かずに「b <= a」と書く。数直線は左から右に大きくなるからね。こう決めておけば、迷わずに済む。これは誰に教わったのか忘れけれど、まだ学生だったような気がするから、○十年前の話。本で読んだんだっけかな。
英語の語順が反映されている
考えてみれば英語では、"greater than or equal to" とか "less than or equal to" だから、順番どおり打つと「>=」とか「<=」になる(「>」は "greater than" で「<」は "less than")。だから、「=>」とか「=<」にはならない。
こんな所にも、英語が影響しているのだ。英語がよくできたほうが、プログラミングの習得には有利なのだ。
日本語では「以上」とか「以下」というのが普通だから、本当は「≧」とか「≦」とか書きたいところだけれどね。