S.F. Page

Programming,Music,etc...

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

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

qiita.com

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

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

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

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

qiita.com

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

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

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