JS 中的Number类型是8字节,除去1字节的符号位,只有56bit用于数字表示,所以只能表示-9007199254740991 (-(2^53-1)) 和9007199254740991(2^53-1)之间的整数
而身份证一般是十八位, 所以超出的部分会自动四舍五入,如:
Number(610123195503220356) // 610123195503220400
解决办法:
一是定义成字符串
二是使用BigInt类型
在数字后面加一个n即可
即610123195503220400n
注意不能用===严格比较,因为BigInt和Number不是同一种类型,但是由于隐式转换的存在, ==会显示为true,
console.log(610123195503220400n== =610123195503220400); // → false
console.log(610123195503220400n== 610123195503220400); // → true