LoginSignup
0
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

答えはなぜバナナなのか🍌🧐 -> すぐにわかりませんでした

Last updated at Posted at 2024-06-29

はじめに

Xで以下のようなポストを見かけました。
JavaScriptの学習中だったので原因を突き止めてやろうと意気込んで検証し始めたのは良いものの、
(案の定、) 時間を無駄に使ってしまう結果に終わりました。
そのせめてもの供養に、記録に残そうと記事にしました。

この記事はJavaScript初心者が仮説思考も行わず無様に試行錯誤を行っただけのものです。

検証

ポストされていたのはこのようなコードです。

console.log(('b' + 'a' + + 'a' + 'a').toLowerCase());
  // banana

これを、PHPのマジカルインクリメントのような機能が働いているのかと3つ目の'a'を変えてみたり、

console.log(('b' + 'a' + + 'b' + 'a').toLowerCase());
  // banana

なんとなく+の間のスペースを取り除いてみたりしましたが、

console.log(('b' + 'a' ++ 'a' + 'a').toLowerCase());
  // SyntaxError

ヒントになるようなものは得られず、
結局適当に文字列を変えてみてようやくNaNが関係していることに気づきました。

console.log(('b' + 'b' + + 'b' + 'b').toLowerCase());
  // bbnanb
console.log(+ 'b');
  // NaN

結果

+演算子には加算だけでなく、オペランドが数値以外の場合は数値に変換する、単項プラス演算子としての役割があるそうです。

つまり、ポストのコードは以下のものと同義のようです。

console.log(('b' + 'a' + NaN + 'a').toLowerCase());
  // banana

おわりに

なぜtoLowerCase()を使っているのかということから仮説を立てていけば、
少なくともNaNが関係していることまではすぐにたどり着けていた気がします。
今後はプログラミング学習のスピードと質を上げるためにも、より仮説思考を意識しながら学習を進めていこうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0