JavaScriptの黒魔術的な側面についてちょっと書く

公開:2016-10-11 21:08
更新:2020-02-15 04:37
カテゴリ:javascript

なぜかQiitaに去年投稿したevalハックのポストにまたストックが増えてきてなんでかなぁ?と思ったら人気ポストにリンクされていたからだった。

http://qiita.com/suetake/items/425684ac278c7cf8c30c#_reference-84711893c2173f80151e

私がこのevalハックを思いついたわけではなくて、knockoutのコードを眺めてたら偶然見つけただけなのだが、まあこういう一見意味不明なコードが書けるJSのことを「黒魔術的」と表現する方々が多い。 このevalハックは闇レベル★★★だそうだ。しかしこの後に続く闇レベル★★★++は衝撃的だが。

++[[]][+[]]+[+[]]

まるでBrainfuckのような難解プログラミング言語の記法のようである。

q.jsというPromiseのライブラリのコードを見てた時に、「メソッドの既定実装を必ず呼び出すハック」というのを見つけて、これはすごいとQiitaにポストしたのだが、こちらは全然ストックが発生しない。

http://qiita.com/SFPGMR/items/d800862d3beb78ab893a

こちらのほうがevalハックよりも実用的な気がするのだが・・。JS使いにとっては当たり前の話なのかもしれないのかもね。

このようなことを行ったり、発見し理解できた時は、何か知的好奇心を満たすような、不思議な満足感が得られる。なんだろうね。これ。 クロージャなんかも、最初知ったときは衝撃的だったもんね。必要ないところにもクロージャ使ったりしてね。 ただこういう黒魔術的なハックは、難解さを伴うので、複数人でのプロジェクトなどでは使うべきではないだろうね。 私の場合個人的かつ趣味でやっているので、このようなコードは発見次第組み込んでは喜んでいる次第だ。

といっても「その筋」の人から見ればまだまだだろうと思うけど。