Jefferson, o que acontece é que, a conta para validação de CPF tem um ponto MUITO importante, que é, se o resto da divisão for igual a 10, nós o consideramos como 0, então, quando utilizamos um CPF que possui um ou mais digitos como 0, o resto será 10, então, ao fazermos essa verificação:
if(digitoVerificador == confirmaDigito(soma)) {
return checaDigitoVerificador(cpf, multiplicador + 1)
}
Caso recebessemos um digito verificador igual a zero, estariamos verificando se zero é igual a dez. para consertar isso, iremos envolver essa validação (digitoVerificador == confirmaDigito(some)
) entre parênteses e vamos fazer outra validação:
if((digitoVerificador == confirmaDigito(soma)) || (digitoVerificador == 0 && confirmaDigito(soma) == 10)) {
return checaDigitoVerificador(cpf, multiplicador + 1)
}
Então, estamos verficiando: Se digitoVerificador
for igual a ao retorno de confirmaDigito(soma)
OU se digitoVerificador
é igual a zero e o retor no de confirmaDigito(soma)
é igual a 10.
Dessa forma a sua validação está correta de acordo com o calculo para validar CPF.
Você pode calcular esse calculo real clicando aqui
Espero ter ajudado, abraços e bons estudos :D