JavaScript · Intermediário · Português · Técnico
inteiro seguro
Número inteiro que o tipo Number representa sem perda, de -(2^53 - 1) a 2^53 - 1. Fora dessa faixa, inteiros vizinhos se confundem e as contas ficam erradas.
Onde usar
Aparece com ids de 64 bits vindos de APIs, que chegam arredondados no JSON.parse. Em code review, a solução é trafegar o id como string ou usar BigInt.
Em código
console.log(Number.MAX_SAFE_INTEGER);
// 9007199254740991
console.log(Number.isSafeInteger(2 ** 53));
// false
console.log(2 ** 53 === 2 ** 53 + 1);
// trueExemplos
O id passou do inteiro seguro e chegou arredondado do JSON.
Use Number.isSafeInteger para checar antes de calcular.
Cuidado
Fazer contas com ids enormes como Number, sem checar Number.isSafeInteger.
Sinônimos
safe integer