JavaScriptで0で始まる数値を扱う際、ハマったので書き残す。
- 以下は期待通り
let $num1 = 0800
let $num2 = '0800'
console.log($num1 === Number($num2)) // true
- 以下が想定外
let $num3 = 0700
let $num4 = '0700'
console.log($num3 === Number($num4)) // false
console.log(Number($num3)) // 448
console.log(Number($num4)) // 700
なぜ?
0(ゼロ)で始まる数字は、後に続く数字がすべて 0~7 であれば 8進数として、8~9 を含んでいれば10進数として解釈されます。
https://www.tohoho-web.com/js/number.htm
そうなんだ、、、