JavaScriptのIndexOf ()できちんとした小さなトリック


私が私が編集しなければならなかったか、再び伸びるいくつかのプラグインを通して閲覧している間、私が拾った小さいトリックは、ここにあります
var arr = [ 1, 2, 3, 'foo' ];

// old way
if (arr.indexOf('foo') > -1) {
    console.log('"foo" is in "arr"!');
}


// new way
if (~arr.indexOf('foo')) {
    console.log('"foo" is in "arr"!');
}

私は疑問-どのようにその仕事ですか?それは私が使用していないか、まだ見たこの小さな演算子のためです

ビット単位のNOT演算子~それは数のすべてのビットを反転させる、私はそれが正確にどのように動作するかわからないが、それは、-1は、虚偽の数、またはむしろ偽の式で終わる唯一のケースであると思われる:0つまり、我々はそれを利用することができますし、indexofで使用することができます.
// you can also negate the statement, no separate parantheses needed
if (!~dailyRoutine.indexOf('☕️')) {
    console.log('Not a life worth living');
}
これについてどう思いますか.私は、それが確かにきちんと見えて、コードで若干の性格を保存すると思います、しかし、それは後でそれを読む人々を混乱させることができました