TIL - Použití ~ s Array.indexOf

Dnes ráno jsem si hrál s balíčkem bonjour a při prohlížení kódu jsem si všiml tohoto funkčního bloku:

function unique () {
  var set = []
  return function (obj) {
    if (~set.indexOf(obj)) return false
    set.push(obj)
    return true
  }
}

Co mě zaujalo, byl úryvek

~set.indexOf(obj)

Zdá se, že tato funkce kontroluje přítomnost obj v poli set . V takovém případě jsem vždy používal set.indexOf(obj) ==-1, ale tohle mě přimělo si to vyhledat.

Operátor ~ není bitový a můžete si o něm přečíst na MDN. Ukázalo se, že ~x se vyhodnotí jako -x-1 takže to bude vyhodnoceno jako 0, když x =-1, a jinak něco nenulového!

Nevím, jestli to využiji, ale formulář vypadá pěkně!