◆ +n === ~~n

int 型かどうか判断したいことがあったのですが 組み込み関数だと数値型であることが前提です
文字列が int 型かを判断するものではないです

なので単純に

const isInt = n => Number.isInteger(+n)

isInteger 関数を使わず もうちょっと短くこれでもできるはずです

const isInt = n => +n === ~~n



ところでネットにもっといい方法転がってないかなっとググってみましたがあまり役立つのが見つかりませんでした
頑張って match メソッドで正規表現を使ってやってたり 「組み込み関数だと文字列対応してないので」 と書いてるのに +n と === で比較していたり parseInt していたりです

正規表現は int 型なら比較的簡単ですが 文字列に限定されるのと 構文の変更ごとに対応が必要です
もうすぐ 実装されそうな新機能に数値リテラルを見やすくするために 「_」 を好きに入れてもおっけいという変更があります

こういうのが構文エラーじゃなく正しい数値型になるそうです→「1_234.567_89」
このような変更があるたびに正規表現を書き換えるなんてしたくないので 文字列的なチェックは避けたいです

「+n === n」 は == にしないと文字列型だと型の違いで常に false です

parseInt と parseFloat の比較では 「1e3」 のような表現で false になります
parseInt だと e は非数値とみなされ 非数値の直前までを数値化するので 1 と 100 の比較となり false です

また 下 2 つの方法は 32bit int に制限していないのでそれ以上も true になります


そんなそもそも正しく動いてない比較対象にならないものばかりが上位に出てきて役立つ情報があんまりでてこなかったです
JavaScript はユーザが多く非プログラマが使ってるのことも多いので仕方ないところもありますけどね
こういうよく必要とされそうなものほど色んな人が書いていてたくさんヒットする分価値のある情報が探しにくいということですね
Google 先生にはがんばってもらいたいです