プロジェクトの古いソースコードを眺めていると次のような記述があった。
{
hoge: !1
}
!1
!?!?
そのコードを見た時、正直笑いました。
なんでそうなるの??って。
そして理由を考えてみたのです。
かのプログラマーがそう書かないといけなかった理由を……。
推測① 短くしたかった
まっさきに思いついたのがこれです。
false
5文字に対して、 !1
2文字ですからね。
わからなくない。
わからなくはないんだけど……なぜ! なぜ 0
にしない。
1文字いけただろ!
そこ妥協すんなよ!!
ということで、この推測は却下しました。
推測② 俺JSに詳しいんだぜって言いたかった
ほら、あるじゃないっすか!
三項演算子覚えたプログラマーが、やたらめったら三項演算子使っちゃうやつ。
めっちゃ見にくいからやめれ!!!
って感じで、 JavaScript の 1
が true
として評価されるのを覚えた人が書いた、と。
これは普通にありそうだ。
……でもなぜ 0
にしない!! 同じタイミングで 0
が false
になること覚えたはずだろ!
そっち使えよ!!
ということで、この推測は却下しました。
推測③ Minify したコードからコピペしてきた
同じコードを見ていた人と会話していたのですが、
「自力でミニマムしたかったんじゃない?」
「ミニマム……ああ Minify のこと? そんなの自力でするわけ……はっ!!!」
僕は気づいてしまったのです。
Minify されたソースコードからコピペしてきたのではないかと。
気になったので Minify で false
がどう変換されるのかググったら、やっぱり !1
になっているみたいでした。
(参考: minify - Javascript minification why is false replaced with !1 and true with !0 - Stack Overflow )
そして、 0
だと整数として扱われるので、 true
の場合も !0
のように !
をつけるとのこと。
かなり有力ですが、この理論だと推測①も復活しそうな気がしてきたぞ……むむむ。
結論
よくわからん!
とりあえず他のところ Minify してないんだし false
と書いてくれ!!
P.S.
こういう理由があるんじゃね? って推測してくれる人がいたらコメントくださいなー。