nullと整数を比較すると起きること
12/18/2025
この記事について
この記事では、「nullと整数を比較するとこうなるよ」
「こういう問題が起きるかもね」
というちょっとした話をします。
nullってなに
この記事を読んいでるということは、ほぼほぼ
ないと思いますが、念のためnullについて説明します。
一言で言うと、nullは
「空っぽでなにもない状態を意味するもの」
です。
PythonでいうNone、GoやLuaでいうnilのようなものです。
数字と比較してみる
本題です。そんなnullを数字と比較するとどうなるのか。
ここでは、例え話をしようと思います。
太郎君は100m走のタイムが2秒だったとします。
タイムが意味不明なのはわかってるので、ご安心ください。
次郎君は100m走を今までで一度も走ったことがないので、
記録がnullです。さあ、この2人の記録を比較すると
どうなるでしょうか?
ここではJavascriptを使ってみます。
const taroRecord = 2; const jiroRecord = null;
そして、太郎君の記録の値の方が小さい(=速い)かを比較します。
console.log(taroRecord < jiroRecord); // false
おっと、どうやら次郎君の方が速いようです。
いやでも、記録がない次郎君の方が
速いなんてことはあり得ませんよね。
このようなことが起きる理由を考えてみましょう。
なぜ次郎君の方が速いのか
それは、nullが0のような意味合いで扱われているからです。
どう言うことかと言うと、Javascript
(というか大体のプログラミング言語)では、
整数とnullを比較すると「nullは0だろうな」と
解釈されます。
つまり、さっきの次郎君のタイムが0秒に
なっているような状態です。
どう解決する?
これは僕が考えた限りでは2つ方法があります。
一つ目は、初期値をめちゃくちゃ大きい値にすること。
const taroRecord = 999;
もう一つは、比較用関数を作ってnullを弾くことです。
最後に
nullは何もないことを意味する便利なものですが、
それの特性をあまり知らずに比較などをしてしまうと
問題が起きることがあります。
これだけは覚えて帰ってください。
nullの扱いには注意!!!