LoginSignup
13
1

More than 1 year has passed since last update.

なぜ !1 なのか?

Last updated at Posted at 2022-06-02

プロジェクトの古いソースコードを眺めていると次のような記述があった。

{
    hoge: !1
}

!1 !?!?

そのコードを見た時、正直笑いました。
なんでそうなるの??って。

そして理由を考えてみたのです。
かのプログラマーがそう書かないといけなかった理由を……。

推測① 短くしたかった

まっさきに思いついたのがこれです。
false 5文字に対して、 !1 2文字ですからね。

わからなくない。
わからなくはないんだけど……なぜ! なぜ 0 にしない。
1文字いけただろ!

そこ妥協すんなよ!!

ということで、この推測は却下しました。

推測② 俺JSに詳しいんだぜって言いたかった

ほら、あるじゃないっすか!
三項演算子覚えたプログラマーが、やたらめったら三項演算子使っちゃうやつ。
めっちゃ見にくいからやめれ!!!

って感じで、 JavaScript の 1true として評価されるのを覚えた人が書いた、と。

これは普通にありそうだ。
……でもなぜ 0 にしない!! 同じタイミングで 0false になること覚えたはずだろ!
そっち使えよ!!

ということで、この推測は却下しました。

推測③ 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.

こういう理由があるんじゃね? って推測してくれる人がいたらコメントくださいなー。

13
1
3

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
13
1