JavaScriptで数値の区切り文字を使用する際の7つの注意点

JavaScriptの数値の区切り文字とは

2021年6月22日に正式仕様となったES2021に追加された新機能。

数値の区切り文字 - MDN

RubyやPerlなどの言語にはあったのだが、ついにJavaScriptでも使用できるようになった。

例えば100万の数値の場合、アンダースコアを付けることで以下のように区切ることができる。

const num = 1_000_000 + 2_000_000
console.log(num) // 3000000

間違えて使用されるケースがありそうなので注意すべき7つの点をまとめた。

1. IE11では使用できない

IE11では使用できないが、逆に言うとIE11以外のほとんどのブラウザでは使用できるのでIE11対応をする必要のないWebサイトなら問題なく使用できる。

https://caniuse.com/?search=Numeric%20separators

2. 連続して2つ以上の_はエラー

1__000_000のように連続して2つ以上のアンダースコアはエラーになる。

const num = 1__000_000 + 2_000_000
console.log(num) // 3000000

3. 数値の先頭に_を置くとエラー

_100のように数値の先頭に_を置くとエラーになる。

const num = _100 + 1_000
console.log(num)

4. 数値の末尾に_を置くとエラー

100_のように数値の末尾に_を置くとエラーになる。

const num = 100_ + 1_000
console.log(num)

5. _が全角だとエラー

1_000のようにアンダースコアが全角だとエラーになる。

全角数字ほど見た目に違いがあるわけではないのでエディタで入力時にエラー検出されないと気づきにくい。

const num = 1_000 + 2_000
console.log(num)

6. Windowsだと_ではなく\の誤入力に注意

Macの場合はキーボード右下の_を押すだけだが、Windowsの場合はShiftキーを押さずに入力するとバックスラッシュ(\)になってしまうので、誤入力しやすい。

7. 表記揺れが発生する可能性がある

数値の区切り文字を導入した場合、1_000と1000のような表記揺れが発生する可能性がある。

そのため数値の区切り文字を使用するならESLintで数値がアンダースコアで区切られているか自動チェックできるようにしたほうが良いだろう。