O que o operador “~” faz neste script? [duplicado

Esta pergunta já tem uma resposta aqui:

Como: O operador ~? 4 respostasComo !! ~ (não til / bang bang til) altera o resultado de uma chamada de método de matriz 'contém / incluídos'? 3 respostas

Eu estou excluindo uma matriz de índice específico, e eu vim com este script:

var arr = [1,2,3,4];
var index = 2;
if (~index) arr.splice(index, 1);

I google"what does "~" operator do in this script?" e não consigo encontrar nenhuma resposta. Acho que estou fazendo uma pesquisa errada. Alguém poderia me explicar esse operador e qual o nome dele para uma pesquisa adequada?

Eu tenho um pequeno suspeito que é meio que comparativo com (!) (Indefinido), mas não tenho certeza ...

desde já, obrigad

questionAnswers(1)

yourAnswerToTheQuestion